c语言有趣的编程代码游戏(用c语言编程游戏)
c语言小游戏代码
最基础的贪吃蛇的代码
#includestdio.h
#includewindows.h//基本型态定义。支援型态定义函数。使用者界面函数 图形装置界面函数。
#includeconio.h //用户通过按键盘产生的对应操作 (控制台)
#includestdlib.h
#includetime.h //日期和时间头文件
#define LEN 30
#define WID 25
int Snake[LEN][WID] = {0}; //数组的元素代表蛇的各个部位
char Sna_Hea_Dir = 'a';//记录蛇头的移动方向
int Sna_Hea_X, Sna_Hea_Y;//记录蛇头的位置
int Snake_Len = 3;//记录蛇的长度
clock_t Now_Time;//记录当前时间,以便自动移动
int Wait_Time ;//记录自动移动的时间间隔
int Eat_Apple = 1;//吃到苹果表示为1
int Level ;
int All_Score = -1;
int Apple_Num = -1;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //获取标准输出的句柄 windows.h
//句柄 :标志应用程序中的不同对象和同类对象中的不同的实例 方便操控,
void gotoxy(int x, int y)//设置光标位置
{
COORD pos = {x,y}; //定义一个字符在控制台屏幕上的坐标POS
SetConsoleCursorPosition(hConsole, pos); //定位光标位置的函数windows.h
}
void Hide_Cursor()//隐藏光标 固定函数
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(hConsole, cursor_info);
}
void SetColor(int color)//设置颜色
{
SetConsoleTextAttribute(hConsole, color);
//是API设置字体颜色和背景色的函数 格式:SetConsoleTextAttribute(句柄,颜色);
}
void Print_Snake()//打印蛇头和蛇的脖子和蛇尾
{
int iy, ix, color;
for(iy = 0; iy WID; ++iy)
for(ix = 0; ix LEN; ++ix)
{
if(Snake[ix][iy] == 1)//蛇头
{
SetColor(0xf); //oxf代表分配的内存地址 setcolor:34行自定义设置颜色的函数
gotoxy(ix*2, iy);
printf("※");
}
if(Snake[ix][iy] == 2)//蛇的脖子
{
color = rand()%15 + 1; //rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。
//头文件:stdlib.h
if(color == 14)
color -= rand() % 13 + 1; //变色
SetColor(color);
gotoxy(ix*2, iy);
printf("■");
}
if(Snake[ix][iy] == Snake_Len)
{
gotoxy(ix*2, iy);
SetColor(0xe);
printf("≈");
}
}
}
void Clear_Snake()//擦除贪吃蛇
{
int iy, ix;
for(iy = 0; iy WID; ++iy)
for(ix = 0; ix LEN; ++ix)
{
gotoxy(ix*2, iy);
if(Snake[ix][iy] == Snake_Len)
printf(" ");
}
}
void Rand_Apple()//随机产生苹果
{
int ix, iy;
do
{
ix = rand() % LEN;
iy = rand() % WID;
}while(Snake[ix][iy]);
Snake[ix][iy] = -1;
gotoxy(ix*2, iy);
printf("⊙");
Eat_Apple = 0;
}
void Game_Over()//蛇死掉了
{
gotoxy(30, 10);
printf("Game Over");
Sleep(3000);
system("pause nul");
exit(0);
}
void Move_Snake()//让蛇动起来
{
int ix, iy;
for(ix = 0; ix LEN; ++ix)//先标记蛇头
for(iy = 0; iy WID; ++iy)
if(Snake[ix][iy] == 1)
{
switch(Sna_Hea_Dir)//根据新的蛇头方向标志蛇头
{
case 'w':
if(iy == 0)
Game_Over();
else
Sna_Hea_Y = iy - 1;
Sna_Hea_X = ix;
break;
case 's':
if(iy == (WID -1))
Game_Over();
else
Sna_Hea_Y = iy + 1;
Sna_Hea_X = ix;
break;
case 'a':
if(ix == 0)
Game_Over();
else
Sna_Hea_X = ix - 1;
Sna_Hea_Y = iy;
break;
case 'd':
if(ix == (LEN - 1))
Game_Over();
else
Sna_Hea_X = ix + 1;
Sna_Hea_Y = iy;
break;
default:
break;
}
}
if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1Snake[Sna_Hea_X][Sna_Hea_Y]!=0Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)
Game_Over();
if(Snake[Sna_Hea_X][Sna_Hea_Y] 0)//吃到苹果
{
++Snake_Len;
Eat_Apple = 1;
}
for(ix = 0; ix LEN; ++ix)//处理蛇尾
for(iy = 0; iy WID; ++iy)
{
if(Snake[ix][iy] 0)
{
if(Snake[ix][iy] != Snake_Len)
Snake[ix][iy] += 1;
else
Snake[ix][iy] = 0;
}
}
Snake[Sna_Hea_X][Sna_Hea_Y] = 1;//处理蛇头
}
void Get_Input()//控制蛇的移动方向
{
if(kbhit())
{
switch(getch())
{
case 87:
Sna_Hea_Dir = 'w';
break;
case 83:
Sna_Hea_Dir = 's';
break;
case 65:
Sna_Hea_Dir = 'a';
break;
case 68:
Sna_Hea_Dir = 'd';
break;
default:
break;
}
}
if(clock() - Now_Time = Wait_Time)//蛇到时间自动行走
{
Clear_Snake();
Move_Snake();
Print_Snake();
Now_Time = clock();
}
}
void Init()//初始化
{
system("title 贪吃毛毛蛇");
system("mode con: cols=80 lines=25");
Hide_Cursor();
gotoxy(61, 4);
printf("You Score:");
gotoxy(61, 6);
printf("You Level:");
gotoxy(61, 8);
printf("The Lenght:");
gotoxy(61, 10);
printf("The Speed:");
gotoxy(61, 12);
printf("Apple Num:");
int i;
for(i = 0; i Snake_Len; ++i)//生成蛇
Snake[10+i][15] = i+1;
int iy, ix;//打印蛇
for(iy = 0; iy WID; ++iy)
for(ix = 0; ix LEN; ++ix)
{
if(Snake[ix][iy])
{
SetColor(Snake[ix][iy]);
gotoxy(ix*2, iy);
printf("■");
}
}
}
void Pri_News()//打印信息
{
SetColor(0xe);
gotoxy(73,4);
All_Score += Level;
printf("%3d", All_Score);
gotoxy(73, 6);
printf("%3d", Level);
gotoxy(73, 8);
printf("%3d",Snake_Len);
gotoxy(73, 10);
printf("0.%3ds", Wait_Time/10);
gotoxy(73, 12);
printf("%d", Apple_Num);
}
void Lev_Sys()//等级系统
{
if(((Apple_Num-1) / 10) == Level)
{
++Level;
if(Wait_Time 50)
Wait_Time -= 50;
else
if(Wait_Time 10)
Wait_Time -= 10;
else
Wait_Time -= 1;
}
}
int main(void)
{
Init();
srand((unsigned)time(NULL));//设置随机数的种子
Now_Time = clock();
int speed1=1000,speed2,a;
printf("\n");
printf("请输入你想要的速度\n");
scanf("%d",speed2);
Level=1;
Wait_Time=speed1-speed2;
printf("请输入你想要的苹果数\n");
scanf("%d",a);
while(a--)
Rand_Apple();
while(1)
{
if(Eat_Apple)
{
++Apple_Num;
Rand_Apple();
Lev_Sys();
Pri_News();
}
Get_Input();
Sleep(10);
}
return 0;
}
用C语言编一个小游戏,注明编码,(简单易懂的游戏,不要复杂)
//C语言写的,一个玩石头、剪刀、布的小游戏。下面是源码。
#includestdio.h
#includestdlib.h
int main()
{
char cq[][10]={"石头","剪刀","布"};
int guess=-1,r,youwin=0,mewin=0,daping=0,total=0;
srand(time(NULL));
while(1)
{
r=(int)((rand()/(RAND_MAX+1.0))*3);
printf("0、石头\n1、剪刀\n2、布\n3、退出\n我已出,请你出:");
scanf("%d",guess);
if(3==guess)
{
break;
}
else
{
total++;
printf("这一次你出的是%s,我出的是%s,所以",cq[guess],cq[r]);
if(0==guess1==r || 1==guess2==r || 2==guess0==r)
{
youwin++;
printf("你赢了!\n");
}
else if(guess==r)
{
daping++;
printf("我们打平了!\n");
}
else
{
mewin++;
printf("我赢了!\n");
}
}
}
printf("总共玩了%d次,你赢了%d次,我赢了%d次,打平%d次!\n",total,youwin,mewin,daping);
system("PAUSE");
return EXIT_SUCCESS;
}
C语言代码 过河智力游戏
#include stdio.h#define MAX 100typedef enum BOOL{ FALSE = 0, TRUE = 1 }BOOL。
typedef union Items{struct {char boy : 1;char girl : 1;char boys)。
语言特点
主要特点
C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建。
通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。通过对C语言进行研究分析,总结出其主要特点如下:
(1)简洁的语言
C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。
实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
(2)具有结构化的控制语句
C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if...else语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。
(3)丰富的数据类型
C语言包含的数据类型广泛,不仅包含有传统的字符型、整型、浮点型、数组类型等数据类型,还具有其他编程语言所不具备的数据类型,其中以指针类型数据使用最为灵活,可以通过编程对各种数据结构进行计算。
以上内容参考:百度百科-C语音
能不能介绍点C语言编程的小游戏,例如贪吃蛇,。。好玩点的。要有代码,谢谢了
可以学写“俄罗斯方块”代码:
#include stdio.h
#include conio.h
#include time.h
#include windows.h
#define ?ZL ?4? ??//坐标增量, 不使游戏窗口靠边
#define W? 36? ?//游戏窗口的宽度
#define H? 20? ?//游戏窗口的高度
int i,j,Ta,Tb,Tc; ????// Ta,Tb,Tc用于记住和转换方块变量的值
int a[60][60]={0};?? //标记游戏屏幕各坐标点:0,1,2分别为空、方块、边框
int b[4]; ??????//标记4个"口"方块:1有,0无,类似开关
int x,y, level,score,speed;?? //方块中心位置的x,y坐标,游戏等级、得分和游戏速度
int flag,next; ??//当前要操作的方块类型序号,下一个方块类型序号
void gtxy(int m, int n);? //以下声明要用到的自编函数
void setColor(unsigned short p, unsigned short q); //设定显示颜色
void gflag( );? //获得下一方块类型的序号
void csh( );? ?//初始化界面
void start( );? //开始部分
void prfk ( ); ??//打印方块
void clfk( );?? //清除方块
void mkfk( );? //制作方块
void keyD( );? //按键操作
int ?ifmov( );? //判断能否移动
void clHA( );? //清除满行的方块
void clNEXT( );? //清除边框外的NEXT方块
int main( )
{ csh( );
? while(1)
? ? { start( );
? ? ? while(1)
? ? ? { setColor(5, 0);
? ? ? ?? prfk( ); ? Sleep(speed);? clfk( );
? ? ? ?? Tb=x;Tc=flag; ?//临存当前x坐标和序号,以备撤销操作
? ? ? ?? keyD( );
? ? ? ?? y++;???? //方块向下移动
? ? ? ?? if (ifmov( )==0) { y--; setColor(2, 0);prfk( ); clHA( ); break;} //不可动时的操作
? ? ?? }
? ? for(i=y-2;iy+2;i++){ if (i==ZL) { j=0; } } ?//方块触到框顶
? ?? if (j==0) {? system("cls");gtxy(10,10); setColor(6, 0);
? ? ? ? ? ? ? ? ? ? ?? printf("游戏结束!"); getch(); break;? }
? ?? clNEXT( ); ?
? ? }
? return 0;
}
void gtxy(int m, int n) ?//控制光标移动
{COORD pos; ?//定义变量
pos.X = m;? //横坐标
pos.Y = n;? ?//纵坐标
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); //获得显示器句柄
}
void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)
{ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, ForeColor + BackGroundColor * 0x10);
}
void csh( ) ???//初始化界面
{gtxy(ZL+W/2-5,ZL-2); setColor(10, 0); printf("俄罗斯方块"); ?????//打印游戏名称
gtxy(ZL+W+3,ZL+7); setColor(5, 0);printf("******* NEXT:"); ?//打印菜单信息
gtxy(ZL+W+3,ZL+13); setColor(5, 0);printf("************");
gtxy(ZL+W+3,ZL+15); setColor(9, 0);printf("Esc :退出游戏");
gtxy(ZL+W+3,ZL+17); setColor(9, 0);printf("↑键:变体");
gtxy(ZL+W+3,ZL+19); setColor(9, 0);printf("空格:暂停游戏");
gtxy(ZL,ZL); setColor(2, 0); printf("╔"); ?gtxy(ZL+W-2,ZL);? printf("╗");? //打印框角
gtxy(ZL,ZL+H); printf("╚");? gtxy(ZL+W-2,ZL+H); ?printf("╝");
a[ZL][ZL+H]=2; ?a[ZL+W-2][ZL+H]=2;? //记住有图案
for(i=2;iW-2;i+=2) {gtxy(ZL+i,ZL);? printf("═"); } ?//打印上横框
for(i=2;iW-2;i+=2) {gtxy(ZL+i,ZL+H); printf("═"); a[ZL+i][ZL+H]=2; } //打印下横框有图案
for(i=1;iH;i++) { gtxy(ZL,ZL+i); ?printf("║"); a[ZL][ZL+i]=2; }? //打印左竖框记住有图案
for(i=1;iH;i++) {gtxy(ZL+W-2,ZL+i); printf("║"); a[ZL+W-2][ZL+i]=2; } //打印右竖框有图案
CONSOLE_CURSOR_INFO cursor_info={1,0};?? //以下是隐藏光标的设置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),cursor_info);
level=1; score=0; speed=400;
gflag( );? flag=next;? //获得一个当前方块序号
}
void gflag( )? //获得下一个方块类型的序号
{ srand((unsigned)time(NULL)); next = rand()%19+1; }
void start( ) ?//开始部分
{ gflag( ); ?Ta=flag; ?flag=next; ?//保存当前方块序号,将下一方块序号临时操作
x=ZL+W+6; y=ZL+10; setColor(5, 0); prfk( );? //给x,y赋值,在框外打印出下一方块
flag=Ta; x=ZL+W/2; y=ZL-1; ?//取回当前方块序号,并给x,y赋值
}
void prfk ( )? //打印俄罗斯方块
{ for(i=0;i4;i++) {b[i]=1; }? //数组b[4]每个元素的值都为1
mkfk ( );? //制作俄罗斯方块
for( i= x-2; i=x+4; i+=2 )? //打印方块
{ for(j=y-2;j= y+1;j++) { if( a[i][j]==1 jZL ){ gtxy(i,j); printf("□"); } } }
gtxy(ZL+W+3,ZL+1); setColor(9, 0); ?printf("level : %d",level);? //以下打印菜单信息
gtxy(ZL+W+3,ZL+3); setColor(9, 0); ?printf("score : %d",score);
gtxy(ZL+W+3,ZL+5); setColor(9, 0); ?printf("speed : %d",speed);
}
void clfk( ) ?//清除俄罗斯方块
{ for(i=0;i4;i++) { b[i]=0; } ?//数组b[4]每个元素的值都为0
mkfk ( ); ?//制作俄罗斯方块
for( i=x-2; i=x+4; i+=2 )? //清除方块
{ for(j=y-2;j=y+1;j++){ if( a[i][j]==0 jZL ){ gtxy(i,j); printf("? "); } } }
}
void mkfk( )? //制作俄罗斯方块
{ a[x][ y]=b[0];? //方块中心位置状态: 1-有,0-无
switch(flag)?? //共6大类,19种小类型
{ case 1: { a[x][y-1]=b[1]; a[x+2][y-1]=b[2]; a[x+2][y]=b[3]; break; }? //田字方块
case 2: { a[x-2][y]=b[1]; a[x+2][y]=b[2]; a[x+4][y]=b[3]; break; }? //直线方块:----
case 3: { a[x][y-1]=b[1]; a[x][y-2]=b[2]; a[x][y+1]=b[3]; break; }? //直线方块: |
case 4: { a[x-2][y]=b[1]; a[x+2][y]=b[2]; a[x][y+1]=b[3]; break; }? //T字方块
case 5: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y]=b[3]; break; }? //T字顺时针转90度
case 6: { a[x][y-1]=b[1]; a[x-2][y]=b[2]; a[x+2][y]=b[3]; break; }? //T字顺转180度
case 7: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x+2][y]=b[3]; break; }? //T字顺转270度
case 8: { a[x][y+1]=b[1]; a[x-2][y]=b[2]; a[x+2][y+1]=b[3]; break; } //Z字方块
case 9: { a[x][y-1]=b[1]; a[x-2][y]=b[2]; a[x-2][y+1]=b[3]; break; }? //Z字顺转90度
case 10: { a[x][y-1]=b[1]; a[x-2][y-1]=b[2]; a[x+2][y]=b[3]; break; }? //Z字顺转180度
case 11: { a[x][y+1]=b[1]; a[x+2][y-1]=b[2]; a[x+2][ y]=b[3]; break; } //Z字顺转270度
case 12: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y-1]=b[3]; break; }? //7字方块
case 13: {a[x-2][y]=b[1]; a[x+2][y-1]=b[2]; a[x+2][y]=b[3]; break; }? //7字顺转90度
case 14: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x+2][y+1]=b[3]; break; } ?//7字顺转180度
case 15: { a[x-2][y]=b[1]; a[x-2][y+1]=b[2]; a[x+2][y]=b[3]; break; } ?//7字顺转270度
case 16: { a[x][y+1]=b[1]; a[x][y-1]=b[2]; a[x+2][y-1]=b[3]; break; } ?//倒7字方块
case 17: { a[x-2][y]=b[1]; a[x+2][y+1]=b[2]; a[x+2][y]=b[3]; break; }? //倒7字顺转90度
case 18: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y+1]=b[3]; break; } ?//倒7字顺转180度
case 19: { a[x-2][y]=b[1]; a[x-2][y-1]=b[2]; a[x+2][y]=b[3]; break; }? //倒7字顺转270度
}
}
void keyD( )? //按键操作
{ if (kbhit( ))??
{ int key;
key=getch();
if (key==224)
{ key=getch();
if (key==75) { x-=2; }? //按下左方向键,中心横坐标减2
if (key==77) { x+=2; }? //按下右方向键,中心横坐标加2
if (key==72)??? ?//按下向上方向键,方块变体
??????{ if (flag=2 flag=3 ) { flag++; flag%=2; flag+=2; }
???????if ( flag=4 flag=7 ) { flag++; flag%=4; flag+=4; }
??????if (flag=8 flag=11 ) { flag++; flag%=4; flag+=8; }
??????if (flag=12 flag=15 ) { flag++; flag%=4; flag+=12; }
??????if ( flag=16 flag=19 ) { flag++; flag%=4; flag+=16; } }
?}
if (key==32)???? //按空格键,暂停
????{ setColor(5, 0);prfk( ); while(1) { if (getch( )==32) { clfk( );break;} } } //再按空格键,继续游戏
?if (ifmov( )==0) { x=Tb; flag=Tc; } //如果不可动,撤销上面操作
??else { setColor(5, 0); prfk( ); Sleep(speed); clfk( ); Tb=x;Tc=flag;} //如果可动,执行操作
}
}
int ifmov( ) ??//判断能否移动
{ if (a[x][y]!=0) { return 0; }? //方块中心处有图案返回0,不可移动
else{ if ( (flag==1 ( a[x][ y-1]==0 a[x+2][y-1]==0 a[x+2][y]==0 ) ) ||? //田字方块
?(flag==2 ( a[x-2][y]==0 a[x+2][y]==0 a[x+4][y]==0 ) ) ||? //以下为其它方块
?????(flag==3 ( a[x][y-1]==0 a[x][y-2]==0 a[x][y+1]==0 ) ) ||
?????(flag==4 ( a[x-2][y]==0 a[x+2][y]==0 a[x][y+1]==0 ) ) ||
?????(flag==5 ( a[x][y-1]==0 a[x][y+1]==0 a[x-2][y]==0 ) ) ||
?????(flag==6 ( a[x][ y-1]==0 a[x-2][y]==0 a[x+2][y]==0 ) ) ||
?????(flag==7 ( a[x][y-1]==0 a[x][y+1]==0 a[x+2][y]==0 ) ) ||
????(flag==8 ( a[x][y+1]==0 a[x-2][y]==0 a[x+2][y+1]==0 ) ) ||
????(flag==9 ( a[x][y-1]==0 a[x-2][y]==0 a[x-2][y+1]==0 ) ) ||
?????(flag==10 ( a[x][y-1]==0 a[x-2][y-1]==0 a[x+2][y]==0 ) ) ||
?????(flag==11 ( a[x][y+1]==0 a[x+2][y-1]==0 a[x+2][y]==0 ) ) ||
????(flag==12 ( a[x][y-1]==0 a[x][y+1]==0 a[x-2][y-1]==0 ) ) ||
( flag==13 ( a[x-2][y]==0 a[x+2][y-1]==0 a[x+2][y]==0 ) ) ||
????( flag==14 ( a[x][y-1]==0 a[x][y+1]==0 a[x+2][y+1]==0 ) ) ||
(flag==15 ( a[x-2][y]==0 a[x-2][y+1]==0 a[x+2][y]==0 ) ) ||
(flag==16 ( a[x][y+1]==0 a[x][y-1]==0 a[x+2][y-1]==0 ) ) ||
( flag==17 ( a[x-2][y]==0 a[x+2][y+1]==0 a[x+2][y]==0 ) ) ||
????(flag==18 ( a[x][y-1]==0 a[x][y+1]==0 a[x-2][y+1]==0 ) ) ||
????(flag==19 ( a[x-2][y]==0 a[x-2][y-1]==0 a[x+2][y]==0 ) ) ) { return 1; }
}
return 0;? //其它情况返回0
}
void clNEXT( )? //清除边框外的NEXT方块
{ flag = next;? x=ZL+W+6;? y=ZL+10; ?clfk( ); }
void clHA( )? //清除满行的方块
{ int k, Hang=0;? ?//k是某行方块个数, Hang是删除的方块行数
for(j=ZL+H-1;j=ZL+1;j--)? //当某行有W/2-2个方块时,则为满行
{ k=0; for(i=ZL+2;iZL+W-2;i+=2)
??{ if (a[i][j]==1)?? //竖坐标从下往上,横坐标由左至右依次判断是否满行
??{ k++;? //下面将操作删除行
if (k==W/2-2) { for(k=ZL+2;kZL+W-2;k+=2) { a[k][j]=0; gtxy(k,j); printf("? "); Sleep(1); }
????for(k=j-1;kZL;k--)
?????{ for(i=ZL+2;iZL+W-2;i+=2)? //已删行数的上面有方块,先清除再全部下移一行
??????{ if(a[i][k]==1) { a[i][k]=0; gtxy(i,k); printf("? ");a[i][k+1]=1; gtxy(i,k+1);
setColor(2, 0); printf("□"); } }
??????}
?????j++;???? //方块下移后,重新判断删除行是否满行
????Hang++;? //记录删除方块的行数
????}
???}
???}
}
score+=100*Hang;? //每删除一行,得100分
if ( Hang0 (score%500==0 || score/500 level-1 ) ) ?//满500分速度加快,升一级
{ speed-=20; level++; if(speed200)speed+=20;}
}
用C语言编写的小游戏代码是什么?
“猜数字小游戏”,每个数字后按空格,最后按回车确认
#includestdio.h
#includestdlib.h
#includetime.h
int a[4],b[4];
int count=0;? //计算猜测次数
void csh( );? //初始化
void start( );? //开始游戏
int main( )
{ csh( );
start( );
}
void csh( )? //初始化
{ printf("\n\n???????? 猜? 数? 字? 小? 游? 戏\n\n");
printf(“? ??猜四个数字,如数字与顺序都正确记为A,数字正确位置不对记为B.\n”);
}
void start( )? //开始游戏
{int m,n;? //m是完全猜对的个数,n是顺序不对的个数
while(1)
{srand((unsigned)time(NULL));? //初始化随机数发生器srand( )
while(1) { for(int i=0;i4;i++) a[i]=rand( )%10; ?//rand( )函数每次随机产生一个0-9的数
if( (a[3]!=a[2]a[3]!=a[1]a[3]!=a[0])
(a[2]!=a[1]a[2]!=a[0])a[1]!=a[0] ) break; }? //4个随机数各自不相等
printf("?? ?请依次输入4个一位整数:\n\n? ?");
while(1)
{for(int i=0;i4;i++) scanf(“%d”,b[i]);
printf("?? ?你输入的是:%d? %d? %d? %d ",b[0],b[1],b[2],b[3]);
m=0;n=0;
for(int i=0;i4;i++)
{for(int j=0;j4;j++)
{ if(b[i]==a[j]i==j)m=m+1; if(b[i]==a[j]i!=j)n=n+1; }
}
count=count+1;
printf("????? %dA? %dB?? 你试了%d次\n? ?",m,n,count);
if(m==4)break;
if(count==8){ count=0; break; }
}
printf("\n");
if(m==4)printf("???? 你猜对了(^-^)! 就是:%d %d %d %d\n",a[0],a[1],a[2],a[3]);
else printf("???? 你输了(T-T)!哈哈!应该是:%d %d %d %d\n",a[0],a[1],a[2],a[3]);
int z;
printf("???? (要继续吗?1或0)\n? ?");
scanf(“%d”,z);
if(z==0) break;
}
}