c语言编写简单小游戏(如何使用C语言编写简单小游戏)

本文目录
- 如何使用C语言编写简单小游戏
- 谁有一些简单小游戏的C语言程序
- 用C语言编一个小游戏,注明编码,(简单易懂的游戏,不要复杂)
- c语言编一个简单的剪刀石头布游戏
- (完整word版)纯C语言写的一个小型游戏 源代码
- 用C语言编写的小游戏代码是什么
- 如何用C语言编写小游戏
如何使用C语言编写简单小游戏
C语言是计算机专业都要学习的一门基础学科。一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦 ,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣。
例如2048这款游戏:
方法/步骤:
#include《stdio.h》
#include《stdlib.h》
#include《time.h》
#include《conio.h》
#include《windows.h》
#define SIZE 4
static int score=0;
void putn(int n[SIZE]);
void getn(int n[SIZE]);
int isempty(int n[SIZE]);
int isfull(int n[SIZE]);
void math(int n[SIZE],char c);
void tow(int n[SIZE]);
void toa(int n[SIZE]);
void tos(int n[SIZE]);
void tod(int n[SIZE]);
//主函数
int main()
{
int i,j;
int n[SIZE][SIZE];
char c=’ ’;
for(i=0;i《SIZE;i++)
{
for(j=0;j《SIZE;j++)
{
n[i][j]=0;
}
}
printf( “***********************\n“
“ 2048(%dX%d) \n“
“ control:W/A/S/D \n“
“press any key to begin \n“
“***********************\n“,SIZE,SIZE);
getch();
system(“cls“);
//n=2048;
//n=2048;
while(1)
{
if(isempty(n))
getn(n);
putn(n);
if(!isempty(n)&&isfull(n))
break;
sleep(200);
c=getch();
while(c!=’w’&&c!=’a’&&c!=’s’&&c!=’d’)
c=getch();
math(n,c);
system(“cls“);
}
printf(“ Game Over!\n“,score);
return 0;
}
//函数
void putn(int n[SIZE])
{
int i,j;
for(i=0;i《SIZE;i++)
{
for(j=0;j《SIZE;j++)
printf(“| “);
printf(“|\n“);
for(j=0;j《SIZE;j++)
{
if(n[i][j]==0)
printf(“| “);
else
printf(“|%4d “,n[i][j]);
}
printf(“|\n“);
for(j=0;j《SIZE;j++)
printf(“|_____“);
printf(“|\n“);
}
printf(“score: %d“,score);
}
void getn(int n[SIZE])
{
int a,b;
a=rand()%SIZE;
b=rand()%SIZE;
while(n[a][b]!=0)
{
a=rand()%SIZE;
b=rand()%SIZE;
}
n[a][b]=2;
}
int isempty(int n[SIZE])
{
int i,j,count=0;
for(i=0;i《SIZE;i++)
for(j=0;j《SIZE;j++)
if(n[i][j]==0)
count++;
return count;
}
int isfull(int n[SIZE])
{
int i,j,count=0;
for(i=0;i《SIZE;i++)
{
for(j=1;j《SIZE-1;j++)
{
if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])
count++;
}
}
for(j=0;j《SIZE;j++)
{
for(i=1;i《SIZE-1;i++)
{
if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])
count++;
}
}
return count》0?0:1;
}
void math(int n[SIZE],char c)
{
switch(c)
{
case ’w’:tow(n);break;
case ’a’:toa(n);break;
case ’s’:tos(n);break;
case ’d’:tod(n);break;
default :;
}
}
void tow(int n[SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a《SIZE;a++)
m[a]=0;
for(j=0;j《SIZE;j++)
{
for(a=0;a《SIZE;a++)
{
for(i=0;i《SIZE-1;i++)
{
if(n[i][j]==0)
{
n[i][j]=n[i+1][j];
n[i+1][j]=0;
}
}
}
}
for(j=0;j《SIZE;j++)
{
for(a=0,i=0;i《SIZE;i++)
{
if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)
{
m[a++]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i+1][j])
{
m[a++]=n[i][j]+n[i+1][j];
score+=m[a-1];
n[i][j]=0,n[i+1][j]=0;
}
}
for(i=0;i《SIZE;i++)
{
n[i][j]=m[i];
m[i]=0;
}
}
}
void toa(int n[SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a《SIZE;a++)
m[a]=0;
for(i=0;i《SIZE;i++)
{
for(a=0;a《SIZE;a++)
{
for(j=0;j《SIZE-1;j++)
{
if(n[i][j]==0)
{
n[i][j]=n[i][j+1];
n[i][j+1]=0;
}
}
}
}
for(i=0;i《SIZE;i++)
{
for(a=0,j=0;j《SIZE;j++)
{
if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)
{
m[a++]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i][j+1])
{
m[a++]=n[i][j]+n[i][j+1];
score+=m[a-1];
n[i][j]=0,n[i][j+1]=0;
}
}
for(j=0;j《SIZE;j++)
{
n[i][j]=m[j];
m[j]=0;
}
}
}
void tos(int n[SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a《SIZE;a++)
m[a]=0;
for(j=SIZE-1;j》=0;j--)
{
for(a=SIZE-1;a》=0;a--)
{
for(i=SIZE-1;i》0;i--)
{
if(n[i][j]==0)
{
n[i][j]=n[i-1][j];
n[i-1][j]=0;
}
}
}
}
for(j=SIZE-1;j》=0;j--)
{
for(a=SIZE-1,i=SIZE-1;i》=0;i--)
{
if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)
{
m[a--]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i-1][j])
{
m[a--]=n[i][j]+n[i-1][j];
score+=m[a+1];
n[i][j]=0,n[i-1][j]=0;
}
}
for(i=SIZE-1;i》=0;i--)
{
n[i][j]=m[i];
m[i]=0;
}
}
}
void tod(int n[SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a《SIZE;a++)
m[a]=0;
for(i=SIZE-1;i》=0;i--)
{
for(a=SIZE-1;a》=0;a--)
{
for(j=SIZE-1;j》0;j--)
{
if(n[i][j]==0)
{
n[i][j]=n[i][j-1];
n[i][j-1]=0;
}
}
}
}
for(i=SIZE-1;i》=0;i--)
{
for(a=SIZE-1,j=SIZE-1;j》=0;j--)
{
if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)
{
m[a--]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i][j-1])
{
m[a--]=n[i][j]+n[i][j-1];
score+=m[a+1];
n[i][j]=0,n[i][j-1]=0;
}
}
for(j=SIZE-1;j》=0;j--)
{
n[i][j]=m[j];
m[j]=0;
}
}
}
谁有一些简单小游戏的C语言程序
可以学写“贪吃蛇”代码:
#include 《stdio.h》
#include 《stdlib.h》
#include 《conio.h》
#include 《time.h》
#include 《Windows.h》
#define W 78 //游戏框的宽,x轴
#define H 26 //游戏框的高,y轴
int dir=3; //方向变量,初值3表示向“左”
int Flag=0; //吃了食物的标志(1是0否)
int score=0; //玩家得分
struct food{ int x; //食物的x坐标
int y; //食物的y坐标
}fod; //结构体fod有2个成员
struct snake{ int len; //蛇身长度
int speed; //速度
int x;
int y;
}snk; //结构体snk有4个成员
void gtxy( int x,int y) //控制光标移动的函数
{ COORD coord;
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void gtxy( int x,int y); //以下声明要用到的几个自编函数
void csh( ); //初始化界面
void keymove( ); //按键操作移动蛇
void putFod( ); //投放食物
int Over( ); //游戏结束(1是0否)
void setColor(unsigned short p, unsigned short q); //设定显示颜色
int main( ) //主函数
{ csh( );
while(1)
{ Sleep(snk.speed);
keymove( );
putFod( );
if(Over( )) {system(“cls”);
gtxy(W/2+1,H/2); printf(“游戏结束!T__T”);
gtxy(W/2+1,H/2+2); printf(“玩家总分:%d分”,score);
getch( ); break;
}
}
return 0;
}
void csh( ) //初始化界面
{ int i; gtxy(0,0);
CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下两行是隐藏光标的设置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
for(i=0;i《=W;i=i+2) //横坐标要为偶数,因为这个要打印的字符占2个位置
{ setColor(2, 0); //设定打印颜色为绿字黑底
gtxy(i,0); printf(“■“); //打印上边框
gtxy(i,H); printf(“■“); //打印下边框
}
for(i=1;i《H;i++)
{ gtxy(0,i); printf(“■“); //打印左边框
gtxy(W,i); printf(“■“); //打印右边框
}
while(1)
{ srand((unsigned)time(NULL)); //启动随机数发生器srand( )
fod.x=rand()%(W-4)+2; //随机函数rand( )产生一个从0到比”(W-4)”小1的数再加2
fod.y=rand()%(H-2)+1; //随机函数rand( )产生一个从0到比”(H-2)”小1的数再加1
if (fod.x%2==0) break; //fod.x是食物的横坐标,要是2的倍数(为偶数)
}
setColor(12, 0); //设定打印颜色为淡红字黑底
gtxy(fod.x,fod.y); printf(“●“); //到食物坐标处打印初试食物
snk.len=3; //蛇身长
snk.speed=350; //刷新蛇的时间,即是移动速度
snk.x=W/2+1; //蛇头横坐标要为偶数(因为W/2=39)
snk.y=H/2; //蛇头纵坐标
setColor(9, 0); //设定打印颜色为淡蓝字黑底
gtxy(snk.x, snk.y); printf(“■“); //打印蛇头
for(i=1;i《snk.len;i++)
{ snk.x[i]=snk.x[i-1]+2; snk.y[i]=snk.y[i-1];
gtxy(snk.x[i],snk.y[i]); printf(“■“); //打印蛇身
}
setColor(7, 0); //恢复默认的白字黑底
return;
}
void keymove( ) //按键操作移动蛇
{ int key;
if( kbhit( ) ) //如有按键输入才执行下面操作
{ key=getch( );
if (key==224) //值为224表示按下了方向键,下面要再次获取键值
{ key=getch( );
if(key==72&&dir!=2)dir=1; //72表示按下了向上方向键
if(key==80&&dir!=1)dir=2; //80为向下
if(key==75&&dir!=4)dir=3; //75为向左
if(key==77&&dir!=3)dir=4; //77为向右
}
if (key==32)
{ while(1) if((key=getch( ))==32) break; } //32为空格键,这儿用来暂停
}
if (Flag==0) //如没吃食物,才执行下面操作擦掉蛇尾
{gtxy(snk.x[snk.len-1],snk.y[snk.len-1]); printf(“ “); }
int i;
for (i = snk.len - 1; i 》 0; i--) //从蛇尾起每节存储前一节坐标值(蛇头除外)
{ snk.x[i]=snk.x[i-1]; snk.y[i]=snk.y[i-1]; }
switch (dir) //判断蛇头该往哪个方向移动,并获取最新坐标值
{ case 1: snk.y--; break; //dir=1要向上移动
case 2: snk.y++; break; //dir=2要向下移动
case 3: snk.x-=2; break; //dir=3要向左移动
case 4: snk.x+=2; break; //dir=4要向右移动
}
setColor(9, 0);
gtxy(snk.x, snk.y); printf(“■“); //打印蛇头
if (snk.x == fod.x && snk.y == fod.y) //如吃到食物则执行以下操作
{ printf(“\007“); snk.len++; score += 100; snk.speed -= 5; Flag = 1; }//这007是响铃
else Flag = 0; //没吃到食物Flag的值为0
if(snk.speed《150) snk.speed= snk.speed+5; //作弊码,不让速度无限加快
}
void putFod( ) //投放食物
{ if (Flag == 1) //如吃到食物才执行以下操作,生成另一个食物
{ while (1)
{ int i,n= 1;
srand((unsigned)time(NULL)); //启动随机数发生器srand( ),接下产生食物坐标值
fod.x = rand( ) % (W - 4) + 2; //产生在游戏框范围内的一个x坐标值
fod.y = rand( ) % (H - 2) + 1; //产生在游戏框范围内的一个y坐标值
for (i = 0; i 《 snk.len; i++) //随机生成的食物不能在蛇的身体上
{ if (fod.x == snk.x[i] &&fod.y == snk.y[i]) { n= 0; break;} }
if (n && fod.x % 2 == 0) break; //n不为0且横坐标为偶数,则食物坐标取值成功
}
setColor(12, 0);
gtxy(fod.x, fod.y); printf(“●“); //光标到取得的坐标处打印食物
}
return;
}
int Over( ) //判断游戏是否结束的函数
{ int i;
setColor(7, 0);
gtxy(2,H+1); printf(“暂停键:space.”); //以下打印一些其它信息
gtxy(2,H+2); printf(“游戏得分:%d”,score);
if (snk.x == 0 || snk.x == W) return 1; //蛇头触碰左右边界
if (snk.y == 0 || snk.y == H) return 1; //蛇头触碰上下边界
for (i = 1; i 《 snk.len; i++)
{ if (snk.x == snk.x[i] && snk.y == snk.y[i]) return 1; } //蛇头触碰自身
return 0; //没碰到边界及自身时就返回0
}
void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)
{ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, ForeColor + BackGroundColor * 0x10);
} //用来设定颜色的函数
用C语言编一个小游戏,注明编码,(简单易懂的游戏,不要复杂)
我这有许多C的小游戏。给你一个基础的简单的汉诺塔程序。你看看:
这是个汉诺塔程序,在调试的时候,输入的数字最好不要大于15,因为每大一个数
所得的结果的步骤都会多一倍。如果你有耐心等待结果的话除外。汉诺塔是在欧洲
流行的一种游戏,有a,b,c三个竿。a竿上有若干个由大到小的圆盘,大的在下面,
小的在上面,b,c都是空杆,请你把a杆上的圆盘都倒到别的杆上,或b或c,在倒盘
的过程中不可以大的压小的,实例程序如下:
#include 《stdio.h》
int i=0;
main()
{
unsigned n;
printf(“Please enter the number of discs: “);
scanf(“%d“,&n);
printf(“\tneedle:\ta\t b\t c\n“);
movedisc(n,’a’,’c’,’b’);
printf(“\t Total: %d\n“,i);
getch();
}
movedisc(n,fromneedle,toneedle,usingneedle)
unsigned n;
char fromneedle,toneedle,usingneedle;
{
if(n》0)
{
movedisc(n-1,fromneedle,usingneedle,toneedle);
i++;
switch(fromneedle)
{
case ’a’:switch(toneedle)
{
case ’b’:printf(“\t[%d]:\t%2d------》%2d\n“,i,n,n);
break;
case ’c’:printf(“\t[%d]:\t%2d-------------》%2d\n“,i,n,n);
break;
}
break;
case ’b’:switch(toneedle)
{
case ’a’:printf(“\t[%d]:\t%2d《----------%2d\n“,i,n,n);
break;
case ’c’:printf(“\t[%d]:\t\t%2d------》%2d\n“,i,n,n);
break;
}
break;
case ’c’:switch(toneedle)
{
case ’a’:printf(“\t[%d]:\t%2d《--------------%2d\n“,i,n,n);
break;
case ’b’:printf(“\t[%d]:\t\t%2d《--------%2d\n“,i,n,n);
break;
}
break;
}
movedisc(n-1,usingneedle,toneedle,fromneedle);
}
}
c语言编一个简单的剪刀石头布游戏
用1、2、3来表示剪刀、石头、布,然后先用scanf函数读取用户的输入,再用rand函数产生一个随机数,最后进行比较就可以了。
#include
#include
#include
void
main()
{
int
com,user;
char
c;
srand((unsigned)time(null));
//初始化随机数,如果没有这条语句,每次运行电脑产生的随机数序列都是一样的
printf(“进入游戏\n“);
do{
printf(“请出拳(1.剪刀、2.石头、3.布):“);
scanf(“%d“,&user);
com=rand()%3+1;
//产生1-3范围内的随机数
printf(“电脑出%s\n“,com==1?“剪刀“:com==2?“石头“:“布“);
switch(com-user)
//用电脑产生的数和用户输入的数的差值来判断胜负
{
case
0:
printf(“平手\n“);
break;
case
1:
case
-2:
printf(“电脑赢了\n“);
break;
case
-1:
case
2:
printf(“你赢了\n“);
}
printf(“继续游戏按y键、其它键退出“);
getchar();
c=getchar();
}while(c==’y’
||
c==’y’);
printf(“已经退出游戏“);
}
(完整word版)纯C语言写的一个小型游戏 源代码
“扫雷“小游戏C代码
#include《stdio.h》
#include《math.h》
#include《time.h》
#include《stdlib.h》
main( )
{char a,b,c,w;
int i,j; /*循环变量*/
int x,y,z; /*雷的位置*/
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(hang《2){printf(“行数太少\n“); t=1;}
if(hang》100){printf(“行数太多\n“);t=1;}
if(lie《2){printf(“列数太少\n“);t=1;}
if(lie》100){printf(“列数太多\n“);t=1;}
if(ge《1){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;j《i;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代码
#include《stdio.h》
#include《math.h》
#include《time.h》
#include《stdlib.h》
main( )
{char a,b,c,w;
int i,j; /*循环变量*/
int x,y,z; /*雷的位置*/
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(hang《2){printf(“行数太少\n“); t=1;}
if(hang》100){printf(“行数太多\n“);t=1;}
if(lie《2){printf(“列数太少\n“);t=1;}
if(lie》100){printf(“列数太多\n“);t=1;}
if(ge《1){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;j《i;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语言编写小游戏
这种小游戏其实就是一个大型的while循环。
初始化之后开始游戏,掉入while循环,在while循环里面的每一回合,得到玩家的鼠标和键盘输入,通过调用函数更新画面,输出画面,直至玩家选择退出游戏,结束while循环,释放储存空间,退出游戏。
想编小游戏的话,可以看看清华大学出版社的《C语言课程设计与游戏开发实践教程》,基于easyX开发小游戏。

更多文章:
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00








