Java 实现简单打字游戏
打字游戏
- 题目:
- 代码实现:
题目:
编写一个打字游戏,从一个面板顶端随机出现一些字母,字母按一定的时间自顶向下移动,如果字母接触到面板底端则Game Over,用户可以通过敲击键盘消除移动中的字母。
- 绘制出GUI界面的简易图
- 生成含有大小写随机字母并记录的方法
- 字母移动并显示的线程类
- 敲击键盘事件的响应方法(用于消除字母)
代码实现:
package ClickLetter;import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Random;/*** auther:Xing* time:2019/12/12*/
public class MoveGame extends JFrame implements Runnable , KeyListener {private Random random = new Random();private Thread thread;//字母个数private final int DEFAULT_SIZE = 10;//各个值的x位置private ArrayList<Integer> x_index = new ArrayList<>();//y坐标位置private int y_index = 50;//存放String字母集private volatile ArrayList<String> numbers = new ArrayList<>();//构造函数public MoveGame() {super("打字游戏");setFont(new Font("Time New Roman",Font.BOLD,20));//启动事件监控addKeyListener(this);//初始化字母集init(DEFAULT_SIZE);//启动线程start();//设置窗体属性setSize(700, 600);setVisible(true);this.setLocation(440,330);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}//生成随机大小写字母的方法private String getNumber(){int flag = random.nextInt(2);char str = 'A';String s = "";if(flag == 0){//大写字母s += (char)(str + random.nextInt(26));}else{//小写字母//char str = 'a';s += (char)(str + random.nextInt(26)+32);}return s;}/*** 初始化字母集及字母的x坐标* @param count 字母个数*/public void init(int count){int x = 10;for(int i=0;i<count;i++) {numbers.add(getNumber());x_index.add(x);x = random.nextInt(30)+50+x;}}//开始进程private void start(){if(thread == null){thread = new Thread(this);thread.start();}}//线程@Overridepublic void run() {while(thread != null){//游戏成功if(numbers.size() == 0){stop();System.exit(0);}//游戏失败if(y_index == 600){stop();System.exit(0);}y_index += 10;//调用方法重绘界面repaint();try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}//停止线程public void stop(){thread = null;}//绘图public void paint(Graphics g){Graphics2D G = (Graphics2D)g;//获取窗口大小Dimension dim = getSize();//设背景为白色g.setColor(Color.white);g.fillRect(0,0,dim.width,dim.height);//设置字体颜色g.setColor(Color.black);//画出字母for(int i=0;i<numbers.size();i++){//获取字母String ch = numbers.get(i);//获取x坐标int x = x_index.get(i);//写字母g.drawString(ch,x,y_index);}}@Overridepublic void keyTyped(KeyEvent e) {char c = e.getKeyChar();for(String str:numbers){char[] chars = str.toCharArray();char ch = chars[0];if(ch == c){numbers.remove(str);break;}}}//主函数public static void main(String[] args) {MoveGame moveGame = new MoveGame();}@Overridepublic void keyPressed(KeyEvent e) {}@Overridepublic void keyReleased(KeyEvent e) {}}
Java 实现简单打字游戏相关推荐
- java d打字游戏_练习--java实现的打字游戏
[实例简介] 简单的打字游戏.分别用单线程和多线程两种方式实现,多线程没有同步. [实例截图] [核心代码] 打字游戏 └── 打字游戏 ├── bin │ └── com │ └── qsl ...
- Java编写网络打字游戏
<Java语言程序设计>–郭克华 网络打字游戏功能简介 这里将介绍一个网络对战的打字游戏.首先运行服务器,界面如图1所示. 图1 ...
- Pygame 简单打字游戏
功能描述: 1.点击开始游戏,会出现一段英文文章,并进入60s倒计时 2.如果一分钟内输入完成这段会自动呈现下一段 3.单词正确数实时统计,背景颜色随输入速度而变化 代码: 注意:上面动态图需要放在游 ...
- html简单打字游戏,javascript实现简单打字游戏
本文实例为大家分享了javascript打字游戏的具体代码,供大家参考,具体内容如下 传智打字游戏 .label{ position:absolute;left: 0px; } var CODE = ...
- html简单打字游戏,javascript实现的简单打字游戏
传智打字游戏 .label{ position:absolute;left: 0px; } var CODE = "QWERTYUIOPASDFGHJKLZXCVBNM"; var ...
- 如何编辑简单打字游戏
先来简单看一下要求 一,我们可以先编写Player类,先把属性定义好,然后进行封装 public class Player {private String name; //定义姓名private in ...
- JAVA实现简单扫雷游戏
这是我第一次写博客,初衷是想把我学到的东西展示出来,通过写博客的方式再捋一遍自己的思路.希望自己的一点点想法能够给其他人启发,我也要把自己存在的问题提出来,以此文为起点,树立写博客的习惯,在之后的日子 ...
- Java入门简单小游戏有哪些?
适合新手练习的小游戏有超级玛丽.愤怒的小鸟.飞机大战.五子棋.彩虹雨.聊天室.华容道.坦克大战.扫雷等.还有贪吃蛇,由Java开发出来的一款经典小游戏,java小白入门可以用这款游戏开发练手锻炼自己的 ...
- Java实现简单扑克牌游戏
扑克牌小游戏: 游戏玩法简介:定义五个People在玩扑克牌游戏,玩法是5个人从一副没有大小王的扑克牌中各抽取4张,牌的类型有四种:♥,♣,♠,♦.牌的大小为从1~13.(此处为了简单,只取1 -5) ...
最新文章
- Vant简单H5 web app【小试牛刀】
- React 组件js文件中如何引入其他的js 文件数组
- 通讯接口:I2C和USART,SPI,CAN,USB2.0
- CentOS 7 学习(一) 配置LAMP和Nginx
- 怎样用hibernate验证登陆界面的用户名和密码
- 定制kali linux
- python与7无关的数输出格式第一行为所有与7无关的数_70 道 NumPy 测试题
- 50mm定焦,f1.8与1.4有什么不同?
- springboot-quartz普通任务与可传参任务
- win7 mysql zip包如何安装_MySql 5.7.31 win7 Zip压缩包配置教程
- iOS load和initialize方法详解
- Git 学习日记-01
- 手写数字图片数据之python读取保存、二值化、灰度化图片+opencv处理图片的方法
- SQL 语句中 where 条件后 写上 1=1 是什么意思!
- 天书奇谈3D服务端搭建架设教程Centos
- 大学毕业学技术学什么好
- [安卓开发]弹幕滚幕效果自定义View之BarrageView|支持点击事件|隐藏不滞留|颜色随机|大小速度范围随机
- AutoML功能解析
- Python 操作配置文件
- java 输出大于n的质数_Java 计算并打印第n个质数
热门文章
- PHP-mysqli_affected_rows($link);---mysqli_affected_rows() expects parameter 1 to be mysqli, object g
- 大连四六级百家外语培训四六级基本方法及考试技巧
- python keyboard hook_Keyboard Hook API函数 参数说明
- 6种有效的iOS团队开发技巧
- 使用Unity Tilemap轻松制作2D瓦片地图-基础篇
- gcc:内存问题检查选项 -fsanitize; asan
- ORACLE按照汉字拼音、笔划、部首排序。
- C语言中的位操作、与、或、非、异或
- Hanginthere
- InstallShield2015LimitedEdition 增加 Redistributables VS2013 vcredist