当前位置: 首页 > news >正文

【GUI】-- 13 贪吃蛇小游戏之食物及成绩判断

GUI编程

04 贪吃蛇小游戏

4.4 第四步:食物及成绩判断

首先,添加食物与分数的数据定义:

	//食物的坐标int foodX;int foodY;Random random = new Random();//积分面板数据结构int score;

在初始化方法中,添加(画出)食物与分数:

		//将食物随机分布于游戏界面foodX = 25 + 25 * random.nextInt(34);foodY = 75 + 25 * random.nextInt(24);score = 0;  //定义初始得分

绘制静态面板中,画出积分面板、食物,并增加游戏失败设定显示的语句:

		//画出积分面板g.setColor(Color.white);g.setFont(new Font("宋体", Font.BOLD, 18));g.drawString("长度  " + length, 750, 30);g.drawString("得分  " + score, 750, 55);//画出食物Data.food.paintIcon(this, g, foodX, foodY);//绘制当前游戏状态if (!isStart) {g.setColor(Color.white);g.setFont(new Font("宋体", Font.BOLD, 40));g.drawString("按下空格开始游戏", 270, 300);}if (isFail) {g.setColor(Color.red);g.setFont(new Font("宋体", Font.BOLD, 40));g.drawString("游戏失败,按下空格重新开始", 220, 300);}

在键盘监听事件中,添加空格对于游戏失败之后重新开始游戏的判断;同时,改进当前蛇头方向与按键方向相反时新的蛇头方向的判定:

//键盘监听事件@Overridepublic void keyPressed(KeyEvent e) {int keyCode = e.getKeyCode();  //获取键盘按键if (keyCode == KeyEvent.VK_SPACE) {if (isFail) {  //重新开始isFail = false;init();} else {  //正常开始isStart = !isStart;repaint();}}//键盘监听到按键后画上对应方向的蛇头if (keyCode == KeyEvent.VK_UP && !direction.equals("D")) {direction = "U";} else if (keyCode == KeyEvent.VK_DOWN && !direction.equals("U")) {direction = "D";} else if (keyCode == KeyEvent.VK_LEFT && !direction.equals("R")) {direction = "L";} else if (keyCode == KeyEvent.VK_RIGHT && !direction.equals("L")) {direction = "R";}}

游戏事件的监听中,添加是否吃到食物与游戏失败的判定:

		   //判断蛇头是否吃到食物if (snakeX[0] == foodX && snakeY[0] == foodY) {length++;foodX = 25 + 25 * random.nextInt(34);foodY = 75 + 25 * random.nextInt(24);score += 10;}//失败判定for (int i = 1; i < length; i++) {if (snakeX[0] == snakeX[i] && snakeY[0] == snakeY[i]) {isFail = true;break;}}

运行结果:

游戏默认界面:

图1

游戏运行中:

图2

游戏失败:

图3

至此,简单的贪吃蛇小游戏已全部编写完毕。


http://www.lryc.cn/news/240366.html

相关文章:

  • 洗地机哪个牌子好用?洗地机选购攻略
  • 节能灯和led灯哪个更护眼?精选高品质的LED护眼台灯
  • 大数据管家 DataSophon 1.2介绍
  • vue实现爱心形状的复选框
  • 珠江啤酒坚持创新,“酿”造电子化采购平台
  • 数据仓库模式之详解 Inmon 和 Kimball
  • 斐波那契数列数列系列问题详解
  • Day38力扣打卡
  • 【C语言:深入理解指针二】
  • 前端实现表格生成序号001、002、003自增
  • 【Django-01】 视图函数和视图类
  • 编译安装报错:configure: error: cannot guess build type; you must specify one
  • 2311rust,到66版本更新
  • JOSEF约瑟 过电流继电器 JL15-300/11 触点形式一开一闭 板前接线
  • postman设置接口关联这样做,薪资直接涨3k
  • Java常见的bug
  • gitea仓库镜像同步至gitlab
  • 服务器不备案的影响
  • 5 个适用于 Linux 的开源日志监控和管理工具
  • 树莓派镜像安装 + 设置 + 镜像批量化操作 - 自动化烧写工具 (四)
  • Redis 性能管理 主从复制与哨兵模式
  • volatile 详解
  • Flink Operator 使用指南 之 Flink Operator安装
  • 类与对象(上篇)
  • 使用SpringBoot集成MyBatis对管理员的查询操作
  • 数据报文去哪儿了
  • Mysql中join on中的like使用
  • 微信运营神器:从群发到批量添加,让你的微信营销更轻松
  • 白杨SEO:2B企业营销是什么?当下主流的短视频直播平台有哪些?企业营销要做短视频直播选哪个平台更好?
  • 将word中的表格无变形的弄进excel中