Google 奔跑吧小恐龙

在Java中,可以使用JavaFX图形框架来实现游戏界面,使用多线程技术来实现游戏循环和动画效果。

以下是使用JavaFX和多线程实现奔跑吧小恐龙游戏的代码示例:

1.创建游戏面板并初始化游戏元素
public class GamePanel extends Pane {private final RectangleBounds dino = new RectangleBounds(50, 150, 50, 50, Color.GREEN);private final ObstacleManager obstacleManager = new ObstacleManager(this);public GamePanel() {setPrefSize(500, 300);getChildren().addAll(dino, obstacleManager);}public void start() {obstacleManager.start();}public void stop() {obstacleManager.stop();}public RectangleBounds getDino() {return dino;}}
2.使用多线程实现游戏循环和动画效果
public class GameLoop extends AnimationTimer {private final GamePanel gamePanel;private final Sprite dinoSprite;private final ObstacleManager obstacleManager;public GameLoop(GamePanel gamePanel, Sprite dinoSprite, ObstacleManager obstacleManager) {this.gamePanel = gamePanel;this.dinoSprite = dinoSprite;this.obstacleManager = obstacleManager;}@Overridepublic void handle(long now) {dinoSprite.update();obstacleManager.update();if (dinoSprite.intersect(obstacleManager.getObstacles())) {stop();gamePanel.stop();}}}
3.创建障碍物管理器和障碍物对象
public class ObstacleManager extends Pane {private final List<RectangleBounds> obstacles = new ArrayList<>();private final Random random = new Random();private final GamePanel gamePanel;public ObstacleManager(GamePanel gamePanel) {this.gamePanel = gamePanel;}public void start() {getChildren().addAll(obstacles);Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(1.5), event -> createObstacle()));timeline.setCycleCount(Animation.INDEFINITE);timeline.play();}public void stop() {obstacles.clear();getChildren().clear();}public List<RectangleBounds> getObstacles() {return obstacles;}private RectangleBounds createObstacle() {double size = random.nextDouble() * 40 + 30;double height = gamePanel.getHeight() - size - gamePanel.getDino().getHeight() + 5;RectangleBounds obstacle = new RectangleBounds(gamePanel.getWidth(), height, size, size, Color.BLUE);obstacles.add(obstacle);getChildren().add(obstacle);return obstacle;}public void update() {for (RectangleBounds obstacle : obstacles) {obstacle.setTranslateX(obstacle.getTranslateX() - 5);}obstacles.removeIf(obstacle -> obstacle.getTranslateX() + obstacle.getWidth() < 0);}}
4.创建角色和障碍物对象,并用图形渲染显示
public class RectangleBounds extends Rectangle {public RectangleBounds(double x, double y, double width, double height, Paint fill) {super(x, y, width, height);setFill(fill);}public boolean intersect(List<RectangleBounds> boundsList) {for (RectangleBounds bounds : boundsList) {if (bounds.getBoundsInParent().intersects(this.getBoundsInParent())) {return true;}}return false;}}
5.最后启动游戏
public class Game extends Application {@Overridepublic void start(Stage primaryStage) throws Exception {GamePanel gamePanel = new GamePanel();Scene scene = new Scene(gamePanel);Sprite dinoSprite = new Sprite(gamePanel.getDino());GameLoop gameLoop = new GameLoop(gamePanel, dinoSprite, gamePanel.getObstacleManager());gameLoop.start();gamePanel.start();primaryStage.setScene(scene);primaryStage.setTitle("Run Dino Run");primaryStage.show();}public static void main(String[] args) {launch(args);}}

Google 奔跑吧小恐龙相关推荐

  1. Java实战项目二(超详细)---奔跑吧小恐龙

    奔跑吧小恐龙是一款简单的跑酷游戏(代码简单,适合初学者学习).玩家控制小恐龙向前狂奔,躲避沿途出现的石头和仙人掌,跑的越远,分数越高.游戏内还增加了背景音乐.跳跃音乐和碰撞音乐. 本文的代码虽然长,但 ...

  2. java实现-现奔跑吧小恐龙-小游戏

    文章目录 现奔跑吧!小恐龙 效果 源码 main包 modle包 service包 view包 现奔跑吧!小恐龙 项目结构 效果 源码 main包 package main;import view.M ...

  3. 奔跑吧小恐龙java代码_【scratch2】-基本操作和奔跑吧恐龙案例

    其实小儿的教学也是从基本的移动开始,但是既然有过尝试,作为一个教程,是不是可以从小朋友的第一个作品开始讲起,这样其他小朋友是不是更容易产生兴趣.不管怎么样,先上个效果图: 这个作品,据小作者介绍,这是 ...

  4. 【MM32F5270开发板试用】移植Google Chrome小恐龙游戏到MM32F5270

    本篇文章来自极术社区与灵动组织的MM32F5270开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:曾是一颗薏米 一.项目背景 在几年前,Google 给 Chrome 浏览器加了一个有趣的 ...

  5. Chrome 的小恐龙游戏,被我破解了...

    一个阳光明媚的周末,透光的窗帘把我从睡梦中叫醒,大脑说今天是周六,可以慵懒个一上午,于是开心地打开我的 Mac 准备看两集Rick and Morty再起床洗漱. 我迫不及待打开了对应的网站,发现浏览 ...

  6. Chrome 的小恐龙游戏,被破解了...

    一个阳光明媚的周末,透光的窗帘把我从睡梦中叫醒,大脑说今天是周六,可以慵懒个一上午,于是开心地打开我的 Mac 准备看两集 Rick and Morty 再起床洗漱. 我迫不及待打开了对应的网站,发现 ...

  7. Chrome的小恐龙被我“开挂”了,看我如何用一行代码让它拥有不死之身

    个人网站:www.dzyong.top 微信公众号:关注<前端筱园>,不错过每一篇推送 作为一个开发人员,用到的最多的就是Chrome浏览器. 当没有网的时候打开浏览器就会看到下面这个界面 ...

  8. Pygame实战:Python开挂版无敌小恐龙【源码免费领】

    导语 ​ ​ ​ ​ ​ ​                                                        hi 大家好呀! 你们还记得? 很久很久以前, 那只谷歌断网 ...

  9. 小恐龙跳跳跳-周雨涵小游戏 -C

    小恐龙跳跳跳! ***找到的游戏. 在google chorme浏览器上,关掉网络,打开一个网站,15秒 后点空格,小恐龙跳跳跳! 注:xxx在2021-4-18日告诉我的游戏! 按'->'让小 ...

最新文章

  1. ORA-00257: archiver error
  2. Python【算法中心 02】Web框架Django管理页面使用(管理员账号创建+API使用+应用添加)GreenPlum数据库引擎及API测试
  3. 使用ToolRunner运行Hadoop程序基本原理分析
  4. 如何快速定位SAP CRM订单应用(Order Application)错误消息抛出的准确位置
  5. 2000年考研英语阅读理解文章二
  6. 通过负载均衡器+域名实现容灾切换-(9)GSLB典型产品-F5简介
  7. js parsefloat 相加_JS高程小记-基本概念
  8. python 数据类笔试题_数据分析岗Python笔试题
  9. c语言函数名合集,C语言内部函数名.doc
  10. 信息安全工程师考试大纲(2016)
  11. 20155236 《信息安全概论》实验二(Windows系统口令破解)实验报告
  12. JAVA Future类详解
  13. 手机游戏连接计算机屏幕,手机怎么投屏到电脑?简单几个步骤就能实现,看电影玩游戏爽爆了...
  14. 树莓派(Raspberry )开机自动启动Python程序
  15. Leaflet地图 -- 绘制台风风圈
  16. RTI DDS 记录
  17. 地图定位之3D 地图
  18. 汉字字库存储芯片扩展实验
  19. cad2020安装1603错误_解决CAD安装过程中出现1603致命错误的方法
  20. 爱优腾火力聚焦耽改101,2021能否续写出圈神话?

热门文章

  1. 大吉大利 今晚吃鸡之跑毒篇
  2. 微信小程序云开发入门之后台获取视频并播放
  3. 知识巩固源码落实之6:c语言拼接字符串与切割字符串(strsep)代码
  4. 自定义RecyclerView支持快速滚动
  5. 解决问题“写代码在中间插入字符时会把后面的相邻字符覆盖掉”
  6. 武汉科技大学计算机顾教授,武汉科技大学2018年度人物
  7. 交错式影像与渐进式影像
  8. LCD显示屏屏暗的问题和解决方法
  9. 世界语言的表达等级制度,人情社会
  10. 苹果8.1系统无服务器,苹果正式推出iOS8.1系统更新