【006期】游戏的开始和结束界面,得分和生命值及其游戏逻辑。

2024-04-26 11:28

本文主要是介绍【006期】游戏的开始和结束界面,得分和生命值及其游戏逻辑。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

核心代码


int score;
int lives;boolean gameOver;
void draw() {background(255);if (!gameOver) {/*游戏中的其他所有逻辑写在此处*/displayScoreAndLives(); // 显示得分和生命值} else {displayGameOverScreen(); // 显示游戏结束画面}
}
void displayScoreAndLives() {fill(0);textAlign(LEFT);textSize(12);text("Score: " + score, 10, 20);text("Lives: " + lives, 10, 35);
}void displayGameOverScreen() {textAlign(CENTER);textSize(32);text("Game Over", width/2, height/2);textSize(16);text("Final Score: " + score, width/2, height/2 + 25);
}void restartGame() {score = 0;lives = 3;gameOver = false;//各项属性值.clear();
}

这个判断距离的函数非常好,值得收藏

  boolean isUnderMouse(float mx, float my) {return mx >= x && mx <= x + tileWidth && my >= y && my <= y + tileHeight;}

下面是一个简单的黑白格游戏的Processing代码示例。游戏中会有黑色的格子从屏幕顶端落下,玩家需要点击它们。如果错过了黑色格子,玩家的生命值会减少。当生命值为零时,游戏结束,并显示最终得分。

ArrayList<Tile> tiles;
int score;
int lives;
final int tileWidth = 50;
final int tileHeight = 20;
boolean gameOver;void setup() {size(200, 400);tiles = new ArrayList<Tile>();score = 0;lives = 3;gameOver = false;// 每秒生成一个黑色格子frameRate(60);
}void draw() {background(255);if (!gameOver) {handleTiles(); // 处理格子的移动和生命值displayScoreAndLives(); // 显示得分和生命值} else {displayGameOverScreen(); // 显示游戏结束画面}
}void mouseClicked() {if (!gameOver) {for (Tile tile : tiles) {if (tile.isUnderMouse(mouseX, mouseY)) {score++;tile.clicked = true;break;}}} else {// 点击屏幕重新开始游戏restartGame();}
}void handleTiles() {// 每60帧添加一个新的黑色格子if (frameCount % 60 == 0) {tiles.add(new Tile(int(random(width/tileWidth)) * tileWidth, -tileHeight));}// 更新和渲染每个格子for (int i = tiles.size()-1; i >= 0; i--) {Tile tile = tiles.get(i);tile.update();if (!tile.clicked && tile.y > height) {lives--;tiles.remove(i);} else if (tile.clicked || tile.y > height) {tiles.remove(i);}if (lives <= 0) {gameOver = true;}}
}void displayScoreAndLives() {fill(0);textAlign(LEFT);textSize(12);text("Score: " + score, 10, 20);text("Lives: " + lives, 10, 35);
}void displayGameOverScreen() {textAlign(CENTER);textSize(32);text("Game Over", width/2, height/2);textSize(16);text("Final Score: " + score, width/2, height/2 + 25);
}void restartGame() {score = 0;lives = 3;gameOver = false;tiles.clear();
}class Tile {float x, y;boolean clicked = false;Tile(float x, float y) {this.x = x;this.y = y;}void update() {y += 2; // 格子下落速度if (!clicked) {fill(0); // 未被点击为黑色} else {fill(100); // 被点击后变为灰色}rect(x, y, tileWidth, tileHeight);}boolean isUnderMouse(float mx, float my) {return mx >= x && mx <= x + tileWidth && my >= y && my <= y + tileHeight;}
}

在这个代码中,我们创建了一个Tile类来表示游戏中的黑色格子。handleTiles函数负责添加新格子,更新它们的位置,并在格子划出屏幕底端时减少生命值。mouseClicked函数会检查玩家是否点击了某个格子,并在游戏结束时允许重新开始。

displayScoreAndLives函数显示当前得分和剩余生命值,而displayGameOverScreen函数显示游戏结束画面和最终得分。

这个游戏示例非常基础,您可以根据自己的需求进一步扩展和美化界面。

这篇关于【006期】游戏的开始和结束界面,得分和生命值及其游戏逻辑。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937458

相关文章

mybatisplus的逻辑删除过程

《mybatisplus的逻辑删除过程》:本文主要介绍mybatisplus的逻辑删除过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录myBATisplus的逻辑删除1、在配置文件中添加逻辑删除的字段2、在实体类上加上@TableLogic3、业务层正常删除即

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短