java实现一个简单的打字游戏
实现逻辑:一个画板实现Runnable接口,会不停刷新,此外这个画板也充当了监听器的作用,监听来自键盘的事件。让JFrame加上监听器就能监听。在画板刷新过程中,去判断有没有正确的打出字母,打出来则去掉数组中的字母,重新换一个字母从最顶部逐渐向下走。话不多说,直接上源码。
package game;import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.LinkedList;
import java.util.List;public class Test01 {public static void main(String[] args) {new MyFrame();}
}class MyFrame extends JFrame{public MyFrame(){this.setSize(800,600);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocationRelativeTo(null);MyPanel myPanel = new MyPanel();this.addKeyListener(myPanel);this.add(myPanel);Thread t = new Thread(myPanel);t.start();}
}class MyPanel extends JPanel implements Runnable,KeyListener{private List<Letter> letters;private int score;private boolean isLive;public MyPanel(){score = 0;isLive = true;letters = new LinkedList<>();for (int i = 0; i <18 ; i++) {Letter letter = new Letter();letter.setPoint(new Point(0,0));int rand = (int)(Math.random()*26 + 65);letter.setLetter((char)rand);
// int randSpeed = (int)(1+Math.random()*7);letter.setSpeed(1);letter.setColor(Color.YELLOW);letter.setPoint(new Point(i*40,0));letters.add(letter);}this.setBackground(Color.BLACK);this.setFont(new Font("微软雅黑",Font.PLAIN,36));}@Overridepublic void paint(Graphics g) {super.paint(g);for (int i = 0; i <letters.size() ; i++) {Letter letter = letters.get(i);System.out.println(letter.getLetter());g.setColor(letter.getColor());g.drawString(letter.getLetter()+"",(int)letter.getPoint().getX(),(int)letter.getPoint().getY());if(letter.getPoint().getY()>600){g.drawString("游戏结束",100,100);}g.drawString("得分:"+score,600,500);}}@Overridepublic void run() {while (true){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}for (int i = 0; i <letters.size() ; i++) {Letter letter = letters.get(i);this.updateState(letters);System.out.println(letter.getPoint());this.repaint();if(letter.getPoint().getY()>600){this.isLive = false;break;}}if(!this.isLive){break;}}}public void updateState(List<Letter> letters){for (int i = 0; i <letters.size() ; i++) {Letter letter = letters.get(i);int y = (int)(letter.getPoint().getY()+letter.getSpeed());int x = (int)(letter.getPoint().getX());Point point = new Point(x,y);letter.setPoint(point);}}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {System.out.println("监听到按下键盘事件!");for (int i = 0; i <letters.size() ; i++) {if(e.getKeyCode()==(int)letters.get(i).getLetter()){letters.get(i).setColor(Color.RED);letters.remove(i);Letter letter = new Letter();letter.setSpeed(2);letter.setColor(Color.YELLOW);int rand = (int)(Math.random()*26 + 65);letter.setLetter((char)rand);letter.setPoint(new Point(i*40,0));letters.add(letter);this.score++;}}}@Overridepublic void keyReleased(KeyEvent e) {}
}class Letter{private char letter;private int speed;private Point point;private Color color;public char getLetter() {return letter;}public void setLetter(char letter){this.letter = letter;}public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}public Point getPoint() {return point;}public void setPoint(Point point) {this.point = point;}public Color getColor() {return color;}public void setColor(Color color) {this.color = color;}public static void main(String[] args) {int rand = (int)(Math.random()*26 + 65);System.out.println(rand);System.out.println((char)rand);}
}
效果演示:
java实现一个简单的打字游戏相关推荐
- 用java做一个简单的打字游戏
Java也是可以做桌面程序的.只不过需要运行在装有JDK的电脑环境上,所以应用不是很广泛,但是用来提高自身的代码逻辑还是可以的!偶有一天看到金山的打字通,就想起何不做个简单的打字游戏用来练练手.于是就 ...
- pygame做一个简单的打字游戏
pygame做一个简单的打字游戏 1.基本代码 下面的代码完成了每一秒在界面的顶部随机生成一个新的字母 # -*- coding=utf-8 -*- import pygame from pygame ...
- java实现一个简单的斗地主游戏
使用Java编写一个斗地主游戏需要一定的编程知识和技能,例如面向对象编程.集合框架.GUI等.下面是一个简单的斗地主游戏的代码示例: import java.util.ArrayList; impor ...
- Java写一个简单的扫雷游戏
〇.目录 一.前言 二.过程中遇到的困难 三.代码 四.成品图 五.代码存在的bug 六.完善建议 七.结语 一.前言 这个学期学习了Java,课程的最后一项作业就是做一个扫雷游戏和一个计算器,经历一 ...
- java实现一个简单的射击游戏2
整体思路: 1.画出英雄,敌人,boss 2.规定英雄的移动速度,敌人和boss的移动速度及方向 实现代码: 处理图片类: package ui;import java.awt.image.Buffe ...
- java实现一个简单的射击游戏1
整体思路 1.GUI画出游戏界面 2.设置监听器,键盘控住游戏人物 3.判断敌人是否被击败,游戏是否结束. 代码实现: GameFrame类画出基本窗体: package ui; import jav ...
- Java制作一个简单地小游戏
package 代码部分; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import jav ...
- pygame简单的俄罗斯方块游戏和简单的打字游戏
1.pygame简单的俄罗斯方块游戏 一.对战的方块管理 定义一个BlockManage管理对战的方块 根据BlockManage根据传入的玩家id返回方块,保证每个玩家拿到的方块序列是一致的,所以在 ...
- simple-type-game 简单的打字游戏
前言 看了微软的一个课程 "Web Development for Beginners - A Curriculum" 中的一篇后,打算用 vue3.2 来重写,并小小的优化一下, ...
- 用Java写一个简单的回合制游戏
用Java写一个简单的回合制游戏 创建基本属性,血量,名字,技能,技能伤害. 如下: public class One3 {//创建三个属性private String name;private St ...
最新文章
- merge into使用方法
- #第六次会议#(4.21)
- 【STM32】 keil软件介绍--工程目标选项配置(上)
- Visual C++中error spawning cl.exe解决办法
- CVE-2020-1472 域内提权利用(域提权)
- spring mvc 基于表单的认证过程及cookie应用和session管理
- php静态stitac,php静态static介绍
- Hadoop HIVE 创建表
- Ubuntu 安装MySQL报共享库找不到
- 完成端口与高性能服务器程序开发
- this super 解释
- matlab常用数学函数实验,实验二-MATLAB的数学运算基础.ppt
- Python基础与大数据应用(三)
- redis-CacheCloud
- CCPC-Wannafly Winter Camp Day1 (Div2, onsite) A 机器人 分类讨论
- 飞秋等级授权码_观点 | 谈谈网络安全等级保护与密码法
- Catboost参数全集
- 1.4 数列极限概念的推广
- flask html 得到文本框 input的内容_你需要知道的HTML知识
- Couldn‘t find meta-data for provider with authority xxx.fileProvider