一个用C++编程的小游戏,可以实现的功能如下:
1、随机生成数字;
2、数字消除合并;
3、判定游戏结束;
一、游戏主体:
因为用C++写的,所以用了类,棋盘用了一个二维数组,m是棋盘规格,取了4。
class game
{
public:
int i, j;
game() {
count1 = 0;
for (i = 0; i < m; i++)
for (j = 0; j < m; j++)
chessboard[i][j] = 0;
srand((unsigned)time(NULL));
x = rand() % m;
y = rand() % m;
if (count1 == 1 || count1 == 0)
chessboard[x][y] = 2;
else
chessboard[x][y] = 4;
showchessboard();
}//构造初始棋盘
void add(int count1);//新增数字
void showchessboard();//显示棋盘
void up();
void down();
void left();
void right();
bool gameover();//游戏失败
private:
int chessboard[m][m];
int x, y, count1, count2, temp1, temp2, k;//c1-连消,c2-空位标记,t1-判连消,t2,k-临时变量
bool flag;//判消
};
二、随机生成数字
void game::add(int count1)
{
for (i = 0; i < m; i++)
for (j = 0; j < m; j++)
{
if (chessboard[i][j] == 0)
goto loop;
}
showchessboard();
return;
loop:srand((unsigned)time(NULL));
do {
x = rand() % m;
y = rand() % m;
} while (chessboard[x][y] != 0);
if (count1 < 2)
chessboard[x][y] = 2;
else
chessboard[x][y] = 4;
showchessboard();
}
三、数字消除合并
void game::up()
{
temp1 = count1;
flag = false;
for (j = 0; j < m; j++)
for (i = 0; i < m;)
{
for (; i < 4 && chessboard[i][j] == 0; i++); // 找非零值
if (i == 4)
break;
else
{
for (k = i + 1; k < 4 && chessboard[k][j] == 0; k++);//找下一个非零值
if (k == 4)
break;
else if (chessboard[i][j] == chessboard[k][j])//匹配
{
chessboard[i][j] *= 2;
chessboard[k][j] = 0;
i = k + 1;
flag = true;
}
else if (chessboard[i][j] != chessboard[k][j] && k < 4)//不匹配
{
i = k;
}
}
}
for (j = 0; j < m; j++)//排列棋盘
for (i = 0, count2 = 0; i < m; i++)
{
if (chessboard[i][j] != 0)
{
temp2 = chessboard[i][j];
chessboard[i][j] = 0;
chessboard[count2][j] = temp2;
count2++;
}
}
}
四、判断游戏结束
bool game::gameover()
{
if (flag)
count1++;//判连消
if (temp1 == count1)
count1 = 0;//未消除,连消归零
add(count1);
for (i = m - 1, j = 0; j < m; j++)//最后一行
{
if (j == m - 1)//右下角
{
if (chessboard[i][j] == 0)
return false;
else if (chessboard[i][j] == 2048)
{
cout << "You Win~\n";
return true;
}
}
else
{
if (chessboard[i][j] == 0 || chessboard[i][j] == chessboard[i][j + 1])
return false;
else if (chessboard[i][j] == 2048)
{
cout << "You Win~\n";
return true;
}
}
}
for (i = 0, j = m - 1; i < m; i++)//最后一列
{
if (i == m - 1)//右下角
{
if (chessboard[i][j] == 0)
return false;
else if (chessboard[i][j] == 2048)
{
cout << "You Win~\n";
return true;
}
}
else
{
if (chessboard[i][j] == 0 || chessboard[i][j] == chessboard[i + 1][j])
return false;
else if (chessboard[i][j] == 2048)
{
cout << "You Win~\n";
return true;
}
}
}
for (i = 0; i < m - 1; i++)
for (j = 0; j < m - 1; j++)
{
if (chessboard[i][j] == 2048)
{
cout << "You Win!\n";
return true;
}
else if (chessboard[i][j] == chessboard[i][j + 1] || chessboard[i][j] == chessboard[i + 1][j] || chessboard[i][j] == 0)
return false;
}
cout << "Game over.\n";
return true;
}
扩展资料:
C++语言的程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。
生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可搞定这个过程。但是该过程实际上分成两个步骤。
第一步是对程序进行编译,这需要用到编译器(compiler)。编译器将C++语句转换成机器码(也称为目标码);
第二步就是对程序进行链接,这需要用到链接器(linker)。链接器将编译获得机器码与C++库中的代码进行合并。C++库包含了执行某些常见任务的函数(“函数”是子程序的另一种称呼)。
参考资料来源:
分享一个大家小时候常玩的小游戏。希望能够喜欢。
使用语言:C++使用工具:vs2019
猜数字游戏
代码如下:
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int intMimiNumbers[4];
int intDangqianNumbers[4];
int num;
int intTryTimes = 0;
int intACount;
int intBCount;
cout << "猜数字游戏" << endl;
cout << "请输入4位秘密数字,以空格隔开,按ENTER键确认:";
for(int i = 0; i < 4; i++){
cin >> intMimiNumbers[i];
if ( '\n' == cin.get())
{
break;
}
}
system("CLS");
cout << "猜数字游戏" << endl;
while(1){
cout << "请输入4位猜测的数字, 以空格隔开,按ENTER键确认:";
intDangqianNumbers[0] = 0;
intDangqianNumbers[1] = 0;
intDangqianNumbers[2] = 0;
intDangqianNumbers[3] = 0;
for(int i = 0; i < 4; i++){
cin >> intDangqianNumbers[i];
if ( '\n' == cin.get())
{
break;
}
}
intACount = 0;
intBCount = 0;
for(int iDangqian = 0; iDangqian < 4; iDangqian++)
{
for(int iMimi = 0; iMimi < 4; iMimi++)
{
if(intDangqianNumbers[iDangqian] == intMimiNumbers[iMimi] && iDangqian == iMimi)
{
intACount++;
}
if(intDangqianNumbers[iDangqian] == intMimiNumbers[iMimi] && iDangqian != iMimi)
{
intBCount++;
}
}
}
intTryTimes ++;
cout <<"[" << intTryTimes << "] : "<< intACount << "A" << intBCount << "B" << endl;
if(intACount == 4)
{
cout << "好样的!你猜对了!" << endl;
break;
}
}
return 0;
}
小游戏的C++代码
火脸柴人小游戏的C++代码实现这是一个简单的火脸柴人游戏,游戏规则如下:玩家通过方向键控制蓝色小人移动,避开位于(10, 10)位置的红色老女人。一旦小人与老女人相遇,游戏结束。代码使用C++编写,需要在编译时添加 `-std=c++11` 参数以确保正确编译。以下是关键函数的代码片段:void gotoxy(int x, ...
C语言C++图形库---贪吃蛇大作战【附源码】
首先,创建一个800 * 600的窗体,使用默认坐标系,设置背景色并清空窗体。接着,将窗体水平分隔为20等分,垂直分隔为15等分,构建网格坐标系统。在游戏界面,用5格白色的矩形表示蛇,用黄色的一格矩形表示食物。绘制网格线,水平线从x坐标0至800,垂直线从y坐标0至600,每条线段间隔为40像素,以方便观...
C\/C++游戏项目教程:看完只会说“编译飞机大战太简单了吧”
在VS中打开项目,进入代码编写阶段。我们先创建一个图形窗口,其尺寸应与我们准备的游戏背景图片保持一致。这样做的目的是使游戏画面与实际背景图片无缝融合。紧接着,插入背景图片以营造出游戏环境氛围。同时,添加背景音乐,让游戏更具沉浸感。这一过程包括音乐文件的正确加载以及播放控制逻辑的实现。然后,...
小游戏的C++代码
\/* Compile with the command: g++ -std=c++11 -o game game.cpp *\/ include include include using namespace std;const unsigned char CTRL_KEY = 0XE0;const unsigned char LEFT = 0X4B;const unsigned char RIGHT = 0X4D;const unsigned char DOWN = 0X50;const unsigned char UP = 0X48...
用C\/C++编写小游戏:5.4 光标定位函数gotoxy
在程序中,可以在绘制地图前使用`gotoxy(0, 0)`将光标移动到左上角,避免屏幕内容滚动。若需在Dev-C++中使用`gotoxy`,只需包含`conio.h`头文件即可。若需自定义实现`gotoxy`函数,可以利用Windows API函数,如`SetConsoleCursorPosition`。将此函数放在`main`函数上方,然后在绘制地图前调用`gotoxy(0...
小游戏的C++代码
\/*一个火柴人游戏,亲自验证,可运行*\/ \/*在编译时添加如下命令:-std=c++11,否则会编译错误*\/ include <cstdio> include <cstdlib> include <Windows.h> include <thread> include <conio.h> using namespace std;const unsigned char CTRL_KEY = 0XE0;const unsigned char LEFT = 0X4B;cons...
如何用C++编写一个小游戏
一个用C++编程的小游戏,可以实现的功能如下:1、随机生成数字;2、数字消除合并;3、判定游戏结束;一、游戏主体:因为用C++写的,所以用了类,棋盘用了一个二维数组,m是棋盘规格,取了4。class game { public:int i, j;game() { count1 = 0;for (i = 0; i < m; i++)for (j = ...
用C++编写的小游戏源代码
while (1){ int mode = ChoiceMode();while (1){ if (mode == 1) \/\/电脑vs玩家 { ComputerChess(Pos1,flag1); \/\/ 电脑下棋 if (GetVictory(Pos1, 0, flag1) == 1) \/\/0表示电脑,真表示获胜 break;PlayChess(Pos2, 2, flag2); \/\/玩家2下棋 if (GetVictory(Pos2...
用c++来编写一个小游戏的源代码,要100-200行就可以了,可以再vc环境下运...
bar(a+1, b+1, a+SQ-1, b+SQ-1);} void clearxiao(int &x, int &y){ int a=x*SQ+BX, b=y*SQ+BY;setfillstyle(1, BkCl);bar(a+1, b+1, a+SQ-1, b+SQ-1);} void goleft(int &x, int &y){ if(x>0){ clearxiao(x, y);drawxiao(--x, y);} } void go...
求助用C或者C++语言实现一个迷宫小游戏代码
int i,i1,x=1,y=1,n=12,m=29;char ch;for(i=0;i<=19;i++){ puts(a[i]);} while(x!=n||y!=m){ ch=getch();if(ch==115||ch==25){ if(a[x+1][y]!=35){ a[x][y]=32;x++;a[x][y]=111;} } if(ch==119||ch==24){ if(a[x-1][y]!=35){ a[x...