方块赛车(C++)

news/2024/11/25 14:55:51/

目录

1. 游戏机制

2. 游戏代码

3. 游戏截图


1. 游戏机制

        玩家通过小键盘上的"←"、"→"来控制赛车的移动,以避开马路周围的障碍物,若赛车开出跑道(撞到障碍物)则游戏结束,玩家可按"空格键"重玩或暂停,也可按"z"键给赛车加速。

2. 游戏代码

#include "../Engine/BrickEngine.h"const BW(15), BH(30);  // BW表示场景的宽, BH表示场景的高
const RacingW(3), RoadW(5); // RW表示赛车的宽, RoadW表示路的宽
int PlayerX;           // PlayerX表示赛车的横坐标
int Road[BH];          // 记录每一行路左边的位置
void Run();// 显示玩家
void ShowPlayer()
{FillStr(PlayerX + 1, BH - 4, "■");FillStr(PlayerX, BH - 3, "■■■");FillStr(PlayerX + 1, BH - 2, "■");FillStr(PlayerX, BH - 1, "■  ■");
}
// 清除玩家
void ClearPlayer()
{FillRec(PlayerX, BH - 4, 3, 4, "  ");
}
// 显示\清除马路
void FillRoad(int y, const std::string &fill)
{if (BH - 4 <= y && y <= BH - 1 && !(Road[y] <= PlayerX && PlayerX <= Road[y] + RacingW - 1)){FillRec(BW - 6 >> 1, (BH >> 1) - 2, 7, 3, "  ");FillStr(BW - 5 >> 1, (BH >> 1) - 1, "Game Over!");Pause();Run();}FillRec(0, y, Road[y], 1, fill);FillRec(Road[y] + RoadW, y, BW - RoadW - Road[y], 1, fill);
}
// 更新马路
void UpdataRoad()
{for (int y = BH - 1; y > 0; --y)if (Road[y] != Road[y - 1]){FillRoad(y, "  ");Road[y] = Road[y - 1];FillRoad(y, "■");}if (Road[1] == Road[2] && Road[2] == Road[3] && Road[3] == Road[4] && Road[4] == Road[5]){FillRoad(0, "  ");while (true){Road[0] += ((rand() & 1) ? 1 : -1) * ((rand() & 1) + 1);if (Road[0] > 0 && Road[0] + RoadW < BW - 1)break;}FillRoad(0, "■");}
}
// 初始化游戏
void Initialize()
{system("cls");// 初始化塞车位置PlayerX = BW - 2 >> 1;// 显示塞车ShowPlayer();// 初始化马路int RootPos = BW - RoadW >> 1;for (int &pos : Road)pos = RootPos;// 生成马路for (int y = BH - 1; y >= 0; --y)FillRoad(y, "■");
}
// 运行游戏
void Run()
{Initialize();int t = 0;while (true){Sleep(1);++t &= 31;if (!(t & 31))UpdataRoad();if (kbhit()){int ch = getch();if (ch == 224){ClearPlayer();switch (getch()){case 75: // 按下小键盘左键{bool CanMove = PlayerX != 0;for (int i = 1; i <= 4; ++i)CanMove &= Road[BH - i] < PlayerX;if (CanMove)--PlayerX;}break;case 77: // 按下小键盘右键{bool CanMove = PlayerX != BW - RacingW;for (int i = 1; i <= 4; ++i)CanMove &= PlayerX < Road[BH - i] + RacingW - 1;if (CanMove)++PlayerX;}break;}ShowPlayer();}else if (ch == 122)UpdataRoad();else if (ch == 32)Pause();}}
}int main()
{SetConsole("方块赛车", 30, 30, "80");srand((int)time(0));Run();
}

3. 游戏截图


http://www.ppmy.cn/news/378779.html

相关文章

高智能方程式赛车

看到sum&#xff0c;我们就知道这是一个求和函数&#xff0c;无论是java、javascript还是mysql中&#xff0c;求和是简单的&#xff0c;但在python中&#xff0c;可以进行一些复杂的元组求和&#xff0c;具体是怎样的呢&#xff1f; python中的sum求和函数 1.sum的使用语法 …

一次模拟汽车

对汽车的模拟编写了三个类&#xff1a;汽车&#xff0c;电车电瓶&#xff0c;新能源汽车。其中分别展示了如何“继承”以及“将实例用作属性”。练习类的创建以及运用。 Car类&#xff1a;包含了汽车的基本属性以及公里数的模拟 Bettery类&#xff1a;可以在电池过低时提醒充电…

手势模拟赛车

这个是我看到我一个学长做了这个玩意以后&#xff0c;我也想做着玩一下&#xff0c;我不知道他是怎么做的&#xff0c;但是我的想法很简单&#xff0c;对图像进行处理后&#xff0c;找到图像最大的两个轮廓所在的地方即是两个手的位置&#xff0c;然后比较两个矩形的Y轴坐标&am…

java fc 公路车_F1公路赛车[NES(FC)]

三星 D608系列(240320) D608 707SC 830W A717 A727 B109 B200 B250 B500 B5702C B600 B5712C C210 C3050C S3500C C3610C D706 D788 D808 D810 D820 D828 D838 D848 D880 D888 D900 D908 D908I D988 E2210C E239 E838 E840 E848 E848I E898 E900 E908 E918 E950 E958 F110 F310…

Unity 赛车控制器

脚本挂载在车子上车子需要具有Rigidbody2D组件 其中子物体&#xff1a; wheelFront&#xff1a;车子前轮&#xff0c;有CircleCollider,WheelJoint2D和Rigidbody2D组件 wheelBack&#xff1a;车子后轮&#xff0c;有CircleCollider,WheelJoint2D和Rigidbody2D组件 wheelFro…

F1赛车相关公开数据集

​ F1赛车 一级方程式世界锦标赛&#xff08;1950 - 2022&#xff09; 背景描述 一级方程式&#xff08;又名 F1 或一级方程式&#xff09;是由国际汽车联合会 (FIA) 批准并归一级方程式集团所有的最高级别的单座赛车。自 1950 年首个赛季以来&#xff0c;国际汽联一级方程式世…

1.27 模拟赛

1.队列 编程计算由“*”号围成的下列图形的面积。面积计算方法是统计*号所围成的闭合曲线 中水平线和垂直线交点的数目。 这道题很水&#xff0c;甚至可以不用搜索&#xff0c;直接循环两次就行 #include<bits/stdc.h> using namespace std; inline int read(){int x0,f…

第十六届全国大学智能汽车竞赛竞速比赛规则

➤第十六届竞赛竞速比赛规则导读 参加过往届比赛的队员可以通过下面内容了解第十六届竞赛规则主要变化。如果第一次参加比赛&#xff0c;建议对于本文进行全文阅读。 竞速比赛共分为为八个组别。详细情况参加文档第一节中的介绍&#xff0c;比赛组别是按照比赛任务来进行划分。…