编程一个最简单游戏代码(如何自己编程做游戏)

http://www.itjxue.com  2023-04-08 08:32  来源:未知  点击次数: 

用C语言编写的小游戏代码是什么?

"扫雷"小游戏C代码

#includestdio.h

#includemath.h

#includetime.h

#includestdlib.h

main( )

{char a[102][102],b[102][102],c[102][102],w;

int i,j; ?/*循环变量*/

int x,y,z[999]; ?/*雷的位置*/

int t,s; ?/*标记*/

int m,n,lei; ?/*计数*/

int u,v; ?/*输入*/

int hang,lie,ge,mo; ?/*自定义变量*/

srand((int)time(NULL)); ?/*启动随机数发生器*/

leb1:? /*选择模式*/

printf("\n? ?请选择模式:\n ??1.标准 ?2.自定义\n");

scanf("%d",mo);

if(mo==2) ?/*若选择自定义模式,要输入三个参数*/

{do

{t=0; printf("请输入\n行数 列数 雷的个数\n");

scanf("%d%d%d",hang,lie,ge);

if(hang2){printf("行数太少\n"); t=1;}

if(hang100){printf("行数太多\n");t=1;}

if(lie2){printf("列数太少\n");t=1;}

if(lie100){printf("列数太多\n");t=1;}

if(ge1){printf("至少要有一个雷\n");t=1;}

if(ge=(hang*lie)){printf("雷太多了\n");t=1;}

}while(t==1);

}

else{hang=10,lie=10,ge=10;}? /*否则就是选择了标准模式(默认参数)*/

for(i=1;i=ge;i=i+1)? /*确定雷的位置*/

{do

{t=0; z[i]=rand( )%(hang*lie);

for(j=1;ji;j=j+1){if(z[i]==z[j]) t=1;}

}while(t==1);

}

for(i=0;i=hang+1;i=i+1)? /*初始化a,b,c*/

{for(j=0;j=lie+1;j=j+1) {a[i][j]='1'; b[i][j]='1'; c[i][j]='0';} }

for(i=1;i=hang;i=i+1)

{for(j=1;j=lie;j=j+1) {a[i][j]='+';} }

for(i=1;i=ge;i=i+1) ?/*把雷放入c*/

{x=z[i]/lie+1; y=z[i]%lie+1; c[x][y]='#';}

for(i=1;i=hang;i=i+1)? /*计算b中数字*/

{for(j=1;j=lie;j=j+1)

{m=48;

if(c[i-1][j-1]=='#')m=m+1; if(c[i][j-1]=='#')m=m+1;

if(c[i-1][j]=='#')m=m+1; ?if(c[i+1][j+1]=='#')m=m+1;

if(c[i][j+1]=='#')m=m+1; ?if(c[i+1][j]=='#')m=m+1;

if(c[i+1][j-1]=='#')m=m+1; if(c[i-1][j+1]=='#')m=m+1;

b[i][j]=m;

}

}

for(i=1;i=ge;i=i+1) ?/*把雷放入b中*/

{x=z[i]/lie+1; y=z[i]%lie+1; b[x][y]='#';}

lei=ge; ?/*以下是游戏设计*/

do

{leb2:? /*输出*/

system("cls");printf("\n\n\n\n");

printf(" ???");

for(i=1;i=lie;i=i+1)

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c ?",w);

}

printf("\n ??|");

for(i=1;i=lie;i=i+1){printf("---|");}

printf("\n");

for(i=1;i=hang;i=i+1)

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c |",w);

for(j=1;j=lie;j=j+1)

{if(a[i][j]=='0')printf("? ?|");

else printf(" %c |",a[i][j]);

}

if(i==2)printf(" 剩余雷个数");

if(i==3)printf(" %d",lei);

printf("\n? ?|");

for(j=1;j=lie;j=j+1){printf("---|");}

printf("\n");

}

scanf("%d%c%d",u,w,v); ?/*输入*/

u=u+1,v=v+1;

if(w!='#'a[u][v]=='@')

goto leb2;

if(w=='#')

{if(a[u][v]=='+'){a[u][v]='@'; lei=lei-1;}

else if(a[u][v]=='@'){a[u][v]='?'; lei=lei+1;}

else if(a[u][v]=='?'){a[u][v]='+';}

goto leb2;

}

a[u][v]=b[u][v];

leb3: ?/*打开0区*/

t=0;

if(a[u][v]=='0')

{for(i=1;i=hang;i=i+1)

{for(j=1;j=lie;j=j+1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; ?if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1; ?if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=1;i=hang;i=i+1)

{for(j=lie;j=1;j=j-1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; ?if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1;? ?if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=hang;i=1;i=i-1)

{for(j=1;j=lie;j=j+1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; ?if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1; if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1; ?if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=hang;i=1;i=i-1)

{for(j=lie;j=1;j=j-1)

{s=0;

if(a[i-1][j-1]=='0')s=1; if(a[i-1][j+1]=='0')s=1;

if(a[i-1][j]=='0')s=1; ?if(a[i+1][j-1]=='0')s=1;

if(a[i+1][j+1]=='0')s=1;if(a[i+1][j]=='0')s=1;

if(a[i][j-1]=='0')s=1;? if(a[i][j+1]=='0')s=1;

if(s==1)a[i][j]=b[i][j];

}

}

for(i=1;i=hang;i=i+1) ?/*检测0区*/

{for(j=1;j=lie;j=j+1)

{if(a[i][j]=='0')

{if(a[i-1][j-1]=='+'||a[i-1][j-1]=='@'||a[i-1][j-1]=='?')t=1;

if(a[i-1][j+1]=='+'||a[i-1][j+1]=='@'||a[i-1][j+1]=='?')t=1;

if(a[i+1][j-1]=='+'||a[i+1][j-1]=='@'||a[i+1][j-1]=='?')t=1;

if(a[i+1][j+1]=='+'||a[i+1][j+1]=='@'||a[i+1][j+1]=='?')t=1;

if(a[i+1][j]=='+'||a[i+1][j]=='@'||a[i+1][j]=='?')t=1;

if(a[i][j+1]=='+'||a[i][j+1]=='@'||a[i][j+1]=='?')t=1;

if(a[i][j-1]=='+'||a[i][j-1]=='@'||a[i][j-1]=='?')t=1;

if(a[i-1][j]=='+'||a[i-1][j]=='@'||a[i-1][j]=='?')t=1;

}

}

}

if(t==1)goto leb3;

}

n=0; ?/*检查结束*/

for(i=1;i=hang;i=i+1)

{for(j=1;j=lie;j=j+1)

{if(a[i][j]!='+'a[i][j]!='@'a[i][j]!='?')n=n+1;}

}

}

while(a[u][v]!='#'n!=(hang*lie-ge));

for(i=1;i=ge;i=i+1) ?/*游戏结束*/

{x=z[i]/lie+1; y=z[i]%lie+1; a[x][y]='#'; }

printf(" ???");

for(i=1;i=lie;i=i+1)

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c ?",w);

}

printf("\n ??|");

for(i=1;i=lie;i=i+1){printf("---|");}

printf("\n");

for(i=1;i=hang;i=i+1)

{w=(i-1)/10+48; printf("%c",w);

w=(i-1)%10+48; printf("%c |",w);

for(j=1;j=lie;j=j+1)

{if(a[i][j]=='0')printf(" |");

else ?printf(" %c |",a[i][j]);

}

if(i==2)printf(" 剩余雷个数");

if(i==3)printf(" %d",lei); printf("\n? ?|");

for(j=1;j=lie;j=j+1) {printf("---|");}

printf("\n");

}

if(n==(hang*lie-ge)) printf("你成功了!\n");

else printf("??? 游戏结束!\n");

printf("??? 重玩请输入1\n");

t=0;

scanf("%d",t);

if(t==1)goto leb1;

}

/*注:在DEV c++上运行通过。行号和列号都从0开始,比如要确定第0行第9列不是“雷”,就在0和9中间加入一个字母,可以输入【0a9】三个字符再按回车键。3行7列不是雷,则输入【3a7】回车;第8行第5列是雷,就输入【8#5】回车,9行0列是雷则输入【9#0】并回车*/

如何用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、对于游戏引擎的熟悉及使用。游戏引擎一般包括渲染器,内存管理器,组织管理几部分。对游戏的画面做出渲染,高效使用内存以及如何控制动画播放等功能。熟悉引擎的使用,也将对于游戏程序员有直观的帮助。

(责任编辑:IT教学网)

更多
上一篇:没有了

推荐其它软件文章