编程一个最简单游戏代码(代码编程教学入门)
如何用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 = 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++
如何自己编程做游戏
自己编程做游戏方法如下:
1、基础语言阶段:常用的编程语言有,C,C++,JAVA,其中最广泛被使用的就是C++,C++语言是一切游戏程序的基础,换而言之,一个优秀的游戏程序员,必须非常熟练掌握并应用C++。
2、数据结构:在掌握C++之后,需要进行数据结构的学习,形象的讲,就是那么一大堆数据,如何去有序的排列其结构。通过对数据结构的学习,便能够开始阅读他人编写的代码,尝试开发简单的程序,可以实现一些编程者自己的构想,是每个程序员必须掌握的技巧。
3、“库”的学习及应用:最常用的有MFC(微软公司类库),GUI(图形界面库),当然“库”的知识及功能非常庞大,通常来说,熟练掌握一部分经常涉及的知识即可。4、游戏程序对于硬件的操纵。比如,内存,CPU,显卡,这将会涉及到一些数学知识,比如立体几何,线性代数等,但是也不用惊慌,并不是非常困难。通过对硬件的熟练操纵,才能将游戏的画面,流畅度等等充分给予表达。
5、对于相关知识的学习。包括物理,脚本,美术等等。不需要深入了解,但相关知识的丰富对于将来做游戏程序会有直接帮助。
6、对于游戏引擎的熟悉及使用。游戏引擎一般包括渲染器,内存管理器,组织管理几部分。对游戏的画面做出渲染,高效使用内存以及如何控制动画播放等功能。熟悉引擎的使用,也将对于游戏程序员有直观的帮助。
用C语言编写的小游戏代码是什么?
/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++6.0、turbo????)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。祝你好运*/\x0d\x0a/*贪吃蛇*/\x0d\x0a#include\x0d\x0a#include\x0d\x0a#include\x0d\x0a#include\x0d\x0aint head=3 ,tail=0;\x0d\x0aint main()\x0d\x0a{\x0d\x0aint i,j,k=0;\x0d\x0aint zuobiao[2][80];\x0d\x0along start;\x0d\x0aint direction=77;\x0d\x0aint gamespeed;\x0d\x0aint timeover;\x0d\x0aint change(char qipan[20][80],int zuobiao[2][80],char direction);\x0d\x0azuobiao[0][tail]=1;zuobiao[1][tail]=1;zuobiao[0][1]=1;zuobiao[1][1]=2;zuobiao[0][2]=1;zuobiao[1][2]=3;zuobiao[0][head]=1;zuobiao[1][head]=4;\x0d\x0a/*处理棋盘*/\x0d\x0achar qipan[20][80];//定义棋盘\x0d\x0afor(i=0;i for(j=0;jqipan[i][j]=' ';//初始化棋盘\x0d\x0afor(i=0;iqipan[0][i]='_';\x0d\x0afor(i=0;iqipan[i][0]='|';\x0d\x0afor(i=0;iqipan[i][79]='|';\x0d\x0afor(i=0;iqipan[19][i]='_';\x0d\x0aqipan[1][1]=qipan[1][2]=qipan[1][3]='*';//初始化蛇的位置\x0d\x0aqipan[1][4]='#';\x0d\x0aprintf("This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n");\x0d\x0aprintf("Input your game speed,please.(e.g.300)\n");\x0d\x0ascanf("%d",gamespeed);\x0d\x0a\x0d\x0awhile(direction!='q')\x0d\x0a{\x0d\x0asystem("cls");\x0d\x0afor(i=0;ifor(j=0;jprintf("%c",qipan[i][j]);\x0d\x0atimeover=1;\x0d\x0astart=clock();\x0d\x0awhile(!kbhit()(timeover=clock()-startif(timeover)\x0d\x0a{\x0d\x0agetch();\x0d\x0adirection=getch();\x0d\x0a}\x0d\x0aelse\x0d\x0adirection=direction;\x0d\x0aif(!(direction==72||direction==80||direction==75||direction==77))\x0d\x0a{\x0d\x0areturn 0;\x0d\x0asystem("cls");\x0d\x0aprintf("GAME OVER!\n");\x0d\x0a}\x0d\x0aif(!change(qipan,zuobiao,direction))\x0d\x0a{\x0d\x0adirection='q';\x0d\x0asystem("cls");\x0d\x0aprintf("GAME OVER!\n");\x0d\x0a}\x0d\x0a}\x0d\x0areturn 0;\x0d\x0a}\x0d\x0aint change(char qipan[20][80],int zuobiao[2][80],char direction)\x0d\x0a{\x0d\x0aint x,y;\x0d\x0aif(direction==72)\x0d\x0ax=zuobiao[0][head]-1;y=zuobiao[1][head];\x0d\x0aif(direction==80)\x0d\x0ax=zuobiao[0][head]+1;y=zuobiao[1][head];\x0d\x0aif(direction==75)\x0d\x0ax=zuobiao[0][head];y=zuobiao[0][head]-1;\x0d\x0aif(direction==77)\x0d\x0ax=zuobiao[0][head];y=zuobiao[1][head]+1;\x0d\x0aif(x==0||x==18||y==78||y==0)\x0d\x0areturn 0;\x0d\x0aif(qipan[x][y]!=' ')\x0d\x0areturn 0;\x0d\x0aqipan[zuobiao[0][tail]][zuobiao[1][tail]]=' ';\x0d\x0atail=(tail+1)%80;\x0d\x0aqipan[zuobiao[0][head]][zuobiao[1][head]]='*';\x0d\x0ahead=(head+1)%80;\x0d\x0azuobiao[0][head]=x;\x0d\x0azuobiao[1][head]=y;\x0d\x0aqipan[zuobiao[0][head]][zuobiao[1][head]]='#';\x0d\x0areturn 1;\x0d\x0a}