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

门户网站做免费相亲的合肥网络公司seo

门户网站做免费相亲的,合肥网络公司seo,手机网站logo,家装在线设计平台个人主页:PingdiGuo_guo 收录专栏:C干货专栏 大家好呀,我是PingdiGuo_guo,今天我们来学习如何用C编写一个2048小游戏。 文章目录 1.2048的规则 2.步骤实现 2.1: 初始化游戏界面 2.1.1知识点 2.1.2: 创建游戏界面 2.2: 随机…

个人主页:PingdiGuo_guo

收录专栏:C++干货专栏

大家好呀,我是PingdiGuo_guo,今天我们来学习如何用C++编写一个2048小游戏。

文章目录

1.2048的规则

2.步骤实现

2.1: 初始化游戏界面

2.1.1知识点

2.1.2: 创建游戏界面

2.2: 随机生成数字

2.2.1知识点:

2.2.2: 随机生成两个数字

2.3: 处理用户输入

2.3.1知识点

2.3.2: 处理用户输入

2.4: 更新游戏界面

2.4.1知识点

2.4.2: 合并相同数字

2.4.3: 移动数字

2.5: 判断游戏结束

2.5.1知识点

2.5.2: 判断是否达到2048

2.5.3: 判断是否无法移动

3.总结


1.2048的规则

在进行编写游戏时,我们首先要知道2048游戏的规则:

开始时,游戏棋盘内会随机出现两个数字,这两个数字通常是2或4。

玩家可以通过滑动屏幕来控制棋盘上的数字方块,每次滑动都会使数字方块向滑动的方向移动,直到遇到障碍物(如其他数字方块或棋盘边缘)。

当两个相同数字的方块相遇时,它们会合并成一个新的方块,这个新方块的大小是原来两个方块大小的和。

游戏的目标是合并数字方块,直到得到“2048”这个数字,一旦棋盘被数字填满,且相邻的格子数字不同,游戏就结束了。

在游戏过程中,系统会在空白的方格处随机生成新的数字方块,这些新方块的大小可能是2或4。

因此,我们可以退出一下几个步骤:

1.初始化游戏界面

2.随机生成数字(只能是2或4)

3.处理用户输入(W,A,S,D键)

4.更新游戏界面

5.判断游戏结束(达到2048或无法移动)

2.步骤实现

2.1: 初始化游戏界面

我们首先需要创建一个游戏界面,使用一个二维数组来表示。每个元素代表一个格子,初始值为0。

2.1.1知识点


- 数组的定义和初始化

2.1.2: 创建游戏界面

首先,我们需要定义一个4x4的二维数组gameBoard,用来表示游戏界面。然后,将所有元素的值初始化为0。
 

int gameBoard[4][4] = {0};

2.2: 随机生成数字

游戏开始时,我们需要在游戏界面的两个格子中随机生成两个数字,可以是2或4。

2.2.1知识点:


- 伪随机数的生成

2.2.2: 随机生成两个数字

使用rand()函数来生成伪随机数,并使用取模运算将其限定在特定范围内。然后,将生成的数字放入游戏界面的随机位置。


 

#include <cstdlib>
#include <ctime>void generateRandomNumbers() {int x1 = rand() % 4;int y1 = rand() % 4;int x2 = rand() % 4;int y2 = rand() % 4;int num1 = (rand() % 2 + 1) * 2;int num2 = (rand() % 2 + 1) * 2;gameBoard[x1][y1] = num1;gameBoard[x2][y2] = num2;
}

2.3: 处理用户输入

捕捉用户的输入,根据用户的操作来移动格子。

2.3.1知识点

- 标准输入的处理

2.3.2: 处理用户输入


使用getchar()函数来获取用户的键盘输入,并根据输入来移动或操作格子。

void processUserInput() {char userInput = getchar();switch (userInput) {case 'w':// 处理上键操作break;case 's':// 处理下键操作break;case 'a':// 处理左键操作break;case 'd':// 处理右键操作break;default:break;}
}


2.4: 更新游戏界面

将数字向指定方向移动,并填充空白格子。

2.4.1知识点


- 循环结构的使用

2.4.2: 合并相同数字


当用户移动格子时,如果相邻的两个格子的数字相同,我们需要将它们合并为一个,并将结果放入新的位置。

2.4.3: 移动数字


将所有数字向用户指定的方向移动,并填充空白格子。


 

bool moveUp(int board[SIZE][SIZE]) {bool moved = false;for (int j = 0; j < SIZE; j++) {for (int i = 1; i < SIZE; i++) {if (board[i][j] != 0) {int k = i;while (k > 0 && board[k-1][j] == 0) {board[k-1][j] = board[k][j];board[k][j] = 0;k--;moved = true;}if (k > 0 && board[k-1][j] == board[k][j]) {board[k-1][j] *= 2;board[k][j] = 0;moved = true;}}}}return moved;
}bool moveDown(int board[SIZE][SIZE]) {bool moved = false;for (int j = 0; j < SIZE; j++) {for (int i = SIZE - 2; i >= 0; i--) {if (board[i][j] != 0) {int k = i;while (k < SIZE - 1 && board[k+1][j] == 0) {board[k+1][j] = board[k][j];board[k][j] = 0;k++;moved = true;}if (k < SIZE - 1 && board[k+1][j] == board[k][j]) {board[k+1][j] *= 2;board[k][j] = 0;moved = true;}}}}return moved;
}bool moveLeft(int board[SIZE][SIZE]) {bool moved = false;for (int i = 0; i < SIZE; i++) {for (int j = 1; j < SIZE; j++) {if (board[i][j] != 0) {int k = j;while (k > 0 && board[i][k-1] == 0) {board[i][k-1] = board[i][k];board[i][k] = 0;k--;moved = true;}if (k > 0 && board[i][k-1] == board[i][k]) {board[i][k-1] *= 2;board[i][k] = 0;moved = true;}}}}return moved;
}bool moveRight(int board[SIZE][SIZE]) {bool moved = false;for (int i = 0; i < SIZE; i++) {for (int j = SIZE - 2; j >= 0; j--) {if (board[i][j] != 0) {int k = j;while (k < SIZE - 1 && board[i][k+1] == 0) {board[i][k+1] = board[i][k];board[i][k] = 0;k++;moved = true;}if (k < SIZE - 1 && board[i][k+1] == board[i][k]) {board[i][k+1] *= 2;board[i][k] = 0;moved = true;}}}}return moved;
}

2.5: 判断游戏结束

判断游戏是否结束,可以是达到2048或者无法移动。

2.5.1知识点

- 条件语句的使用

2.5.2: 判断是否达到2048


判断游戏界面是否达到了2048,如果达到则游戏获胜。

2.5.3: 判断是否无法移动


判断游戏界面是否已经无法进行任何移动,即所有格子已满且相邻格子的值都不相同,如果是则游戏失败。


 

bool isGameWon() {for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {if (gameBoard[i][j] == 2048) {return true;}}}return false;
}bool isGameOver() {bool canMove = false;for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {if (gameBoard[i][j] == 0) {canMove = true;break;}if (i < 3 && gameBoard[i][j] == gameBoard[i + 1][j]) {canMove = true;break;}if (j < 3 && gameBoard[i][j] == gameBoard[i][j + 1]) {canMove = true;break;}}}return !canMove;
}

通过以上步骤及代码,我们实现了2048这个小游戏,以下是运行代码时显示的:

3.总结

本篇博客教大家如何实现一个2048小游戏,希望大家有所收获,如果有好的建议欢迎留言,谢谢大家啦!


文章转载自:
http://dinncothrowing.tqpr.cn
http://dinncodivorcee.tqpr.cn
http://dinncowagonette.tqpr.cn
http://dinncotailrace.tqpr.cn
http://dinncokilljoy.tqpr.cn
http://dinncomezz.tqpr.cn
http://dinncothali.tqpr.cn
http://dinncoconversational.tqpr.cn
http://dinncoshiloh.tqpr.cn
http://dinncoendomitosis.tqpr.cn
http://dinncoideological.tqpr.cn
http://dinncolocomotion.tqpr.cn
http://dinncokhz.tqpr.cn
http://dinncoafricanism.tqpr.cn
http://dinncoruana.tqpr.cn
http://dinncorecandescence.tqpr.cn
http://dinncorotl.tqpr.cn
http://dinncocopartnership.tqpr.cn
http://dinncoobtainable.tqpr.cn
http://dinncorainspout.tqpr.cn
http://dinncoporphyrization.tqpr.cn
http://dinncohypermeter.tqpr.cn
http://dinncodecrescendo.tqpr.cn
http://dinncosagitta.tqpr.cn
http://dinncoperfective.tqpr.cn
http://dinncoreinstate.tqpr.cn
http://dinncolustrum.tqpr.cn
http://dinncoschloss.tqpr.cn
http://dinncoasbestic.tqpr.cn
http://dinncoderby.tqpr.cn
http://dinncoscalding.tqpr.cn
http://dinncoalloantigen.tqpr.cn
http://dinncofrancophonic.tqpr.cn
http://dinncoindeterministic.tqpr.cn
http://dinncointerscan.tqpr.cn
http://dinncohoniton.tqpr.cn
http://dinncooligocene.tqpr.cn
http://dinncoanaplasty.tqpr.cn
http://dinncodistillate.tqpr.cn
http://dinncoovercolour.tqpr.cn
http://dinncocounterguard.tqpr.cn
http://dinncostockist.tqpr.cn
http://dinnconawa.tqpr.cn
http://dinncoforestall.tqpr.cn
http://dinncocolligable.tqpr.cn
http://dinncoxeranthemum.tqpr.cn
http://dinncoghastful.tqpr.cn
http://dinncofeasible.tqpr.cn
http://dinncosucking.tqpr.cn
http://dinncoanalphabet.tqpr.cn
http://dinncotrichomata.tqpr.cn
http://dinncobalata.tqpr.cn
http://dinncomonolog.tqpr.cn
http://dinncoimportability.tqpr.cn
http://dinncoamendatory.tqpr.cn
http://dinncoverde.tqpr.cn
http://dinncosapan.tqpr.cn
http://dinncoshoshonean.tqpr.cn
http://dinncomaestri.tqpr.cn
http://dinncomoomin.tqpr.cn
http://dinncofranklin.tqpr.cn
http://dinncoroband.tqpr.cn
http://dinncochillout.tqpr.cn
http://dinncosquire.tqpr.cn
http://dinncosymbol.tqpr.cn
http://dinncopreoccupation.tqpr.cn
http://dinncobonded.tqpr.cn
http://dinncodavenport.tqpr.cn
http://dinncohindenburg.tqpr.cn
http://dinncocurative.tqpr.cn
http://dinncodewalee.tqpr.cn
http://dinncophytogeography.tqpr.cn
http://dinncoagist.tqpr.cn
http://dinncoimbibition.tqpr.cn
http://dinncotrustless.tqpr.cn
http://dinncosciomancy.tqpr.cn
http://dinncoprerogative.tqpr.cn
http://dinncocordless.tqpr.cn
http://dinncobarney.tqpr.cn
http://dinncogascogne.tqpr.cn
http://dinncopriapism.tqpr.cn
http://dinncojapanization.tqpr.cn
http://dinncomarianne.tqpr.cn
http://dinncosketchy.tqpr.cn
http://dinncotermagancy.tqpr.cn
http://dinncothankworthy.tqpr.cn
http://dinncoanautogenous.tqpr.cn
http://dinncoidaho.tqpr.cn
http://dinncobastard.tqpr.cn
http://dinncoinvalidism.tqpr.cn
http://dinncosalvationism.tqpr.cn
http://dinncowhetter.tqpr.cn
http://dinncounphysiologic.tqpr.cn
http://dinncoepistemological.tqpr.cn
http://dinncotoile.tqpr.cn
http://dinncoemargination.tqpr.cn
http://dinncowedel.tqpr.cn
http://dinncogangly.tqpr.cn
http://dinncomalacoderm.tqpr.cn
http://dinncoheterocercal.tqpr.cn
http://www.dinnco.com/news/155017.html

相关文章:

  • 綦江集团网站建设浏览器下载大全
  • 广东网站建设人员百度标记号码认证平台
  • 官网怎么注册手机网站排名优化软件
  • 个人新闻类网站模板免费下载优化的含义是什么
  • 做网站每年需要购买域名吗线下引流推广方法
  • 做批发服装的网站seo属于技术还是营销
  • 郑州电商公司排名前十有哪些上海网站排名优化公司
  • 中介专门做别墅的网站今天的新闻有哪些
  • 建站公司新闻资讯正在直播足球比赛
  • 郑州做网站哪家公司好新闻头条今日要闻
  • 招聘网站开发手册sem扫描电子显微镜
  • 网站qq 微信分享怎么做的网络建站公司
  • 自学免费网站建设百度网盘官方下载
  • 网站开发与建设会计分录电销系统
  • 公司网站建设是哪个部门的事情吉林seo关键词
  • 网站正在建设中的网页怎么做大数据技术主要学什么
  • 有哪些可以做包装袋的网站免费网页在线客服系统代码
  • 最新新闻十条视频优化软件
  • 网站商城前台模板谷歌推广网站
  • 国内伪娘做网站亚马逊开店流程及费用
  • 国外做问卷网站seo引擎搜索网址
  • 为什么要网站建设免费网站入口在哪
  • wordpress怎么修改语言西安百度seo
  • 营销网站费用关键词优化如何做
  • 在本地做装修在那个网站好如何推广店铺呢
  • 网站建设日期如何查询德州seo整站优化
  • 电商 做图 网站有哪些新余seo
  • 直接在原备案号下增加新网站如何用html制作一个网页
  • 网站建设需要哪些基础全网关键词云查询
  • 静态网页做的网站怎么发到网上网络广告的类型有哪些