当前位置:首页 » 编程语言 » c语言文字消除游戏代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言文字消除游戏代码

发布时间: 2023-07-31 02:15:32

⑴ 急求一份c语言打字游戏代码,要求单词从屏幕上方落下,打字正确字母变为绿色。

#include<time.h>
#include<stdlib.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
#include<math.h>

#define R 10
#define ESC 0x011b
#define LOW 0x5000
#define FAST 0x4800
int draw_car(int x,int y,char *ch);
double dalta=20,angle;

void *image;
int step=20;
main()
{

int gdriver=DETECT,gmode;
static int startx=60;
static int starty=20;
int maxy,maxx,l=1,n=1;
char ch,play, str[2];
int size,temch;
int ok,y=50;

clrscr();

printf("\n\n\n\n\n*****************************************\n");

printf(" 1.play only number 0-9 .\n");
printf(" 2.play only char a-z .\n");
printf(" 3.exit\n");
printf("*****************************************\n");
while(1){
printf("\nPls enter choice:");
play=getche();
if((play=='1')||(play=='2'))
break;

if(play=='3')
return;
}

registerbgidriver( EGAVGA_driver ); /*注册vga驱动*/
initgraph(&gdriver,&gmode,"d:\\tc3\\bgi"); /*初始化图形界面*/
cleardevice(); /*清除屏幕*/
setbkcolor(BLUE); /*将背景色设置成蓝色*/
size=imagesize(startx,starty,startx+60,starty+60); /*计算生成60×60个象素的图需要的字节数*/
image=(unsigned char *)malloc(size); /*分配内存*/
maxx=getmaxx();
maxy=getmaxy();
randomize();

printf("Press ESC to exit game! ");
printf(" %c to fast speed,%c to low speed!",24,25);
do{

ok=0;
if(play=='1')
ch=random(9)+48;
if(play=='2')
ch=random(26)+65;
str[0]=ch;
do{

while(bioskey(1)==0) /*如果没有按键就不停的循环*/
{
if(l==1) /*从左到右*/
{
n++;
angle=-1*(n*step)/M_PI*180/R;
if((int)(-1*angle)%360<dalta)
angle-=dalta;
if(n>(maxx-180)/step){
if(starty>maxy-100)
starty=20;
else
starty+=y;

l=0;
}
}
if(l==0) /*从右到左*/
{
--n;
angle=-1*(n*step)/R/M_PI*180;
if((int)(-1*angle)%360<dalta)
angle-=dalta;

if(n==1){
if(starty>maxy-100)
starty=20;
else
starty+=y;

l=1;
}
}

draw_car(startx+n*step,starty,str);
}

temch=bioskey(0);
if(temch==FAST){
step+=10;
y+=10;
}
if(temch==LOW){
step-=10;
y-=10;
}
ok=temch&0x00ff;

if((ok==ch)||(ok==ch+32)){
ok=1;
starty=20;
break;
}

}while(temch!=ESC);
if(ok!=1)
break;
}while(1);
free(image);
closegraph();
return;
}

int draw_car(int x,int y,char *ch){
setcolor(YELLOW); /*设置前景色为黄色*/
rectangle(x,y,x+60,y+40); /*画车厢*/

pieslice(x+15,y+50,angle,angle-dalta,10); /*画轮上的小片扇形部分*/
pieslice(x+45,y+50,angle,angle-dalta,10);

setfillstyle(SOLID_FILL, YELLOW); /*设置填充模式为实填充,颜色为黄色*/
circle(x+15,y+50,10); /*画车轮*/
circle(x+45,y+50,10);
circle(x+15,y+50,3);
circle(x+45,y+50,3);
setcolor(WHITE);
settextstyle(1,0,4);
outtextxy(x+25,y,ch);
getimage(x,y,x+60,y+60,image); /*获取当前的图片*/
delay(200);
putimage(x,y,image,XOR_PUT); /*使用异或模式将图片显示上去*/

return;
}

⑵ 求纯C语言打字游戏源代码及解析

# include "Typer.h"
# include <stdio.h>
# include <stdlib.h>
# include <graphics.h>
//download by http://www.codefans.net
void main()
{
BOOL bQuit=FALSE; /* 是否退出 */
BOOL bPause=FALSE; /* 是否暂停 */
int tm1,tm2;
BYTE Key;

randomize(); /* 初始化随机数种子 */
SetGraphMode();
SelectLevel();
ShowBar();
tm1=CreateTimer(1,MoveLetter); /* 创建移动字符对象时钟 */
tm2=CreateTimer(Interval,CreateLetter); /* 创建产生字符对象时钟 */
CreateLetter();

Key=AscKey();
while (!bQuit)
{
TimerEvent();
switch (Key)
{
case NULL:
break;
case KEY_ESC:
bQuit=TRUE;
break;
case KEY_SPACE:
bPause=!bPause;
tmTM[tm1].Enable=!bPause;
tmTM[tm2].Enable=!bPause;
break;
default:
if (!bPause) Check(Key);
}
Key=AscKey();
}
CloseGraphMode();
}

void SetGraphMode()
{
int Device=VGA,Mode=VGAHI;
initgraph(&Device,&Mode,"");
settextstyle(TRIPLEX_FONT,HORIZ_DIR,1);
setfillstyle(SOLID_FILL,0);
setcolor(7);
}

void CloseGraphMode()
{
restorecrtmode();
}

/* 从键盘缓冲区内直接读出ASC码 */
BYTE AscKey(void)
{
int start,end;
WORD key=0;
start=peek(0,0x41a);
end=peek(0,0x41c);
if (start==end) return(0);
else
{
key=peek(0x40,start);
start+=2;
if (start==0x3e) start=0x1e;
poke(0x40,0x1a,start);
return(key&0xff);
}
}

void MoveLetter(void)
{
int i;

for (i=0;i<MAX_LETTER;i++)
{
if (Letter[i].Used)
{
HideLetter(i);
Letter[i].y+=Step;
ShowLetter(i);
/* 字符对象下落到最底部 */
if (Letter[i].y>MAX_HEIGHT) KillLetter(i);
}
}
}

void KillLetter(int LetterID)
{
if (Letter[LetterID].Used)
{
Letter[LetterID].Used=FALSE;
LetterUsed--;
HideLetter(LetterID);
}
/* 删除字符对象后马上再创建一个 */
CreateLetter();
}

void CreateLetter()
{
int i=0;
int x;
BYTE val;

if (LetterUsed==MAX_LETTER) return; /* 无字符对象可用则返回 */
while (Letter[++i].Used); /* 找到第一个空闲的字符对象,产生一个字符对象 */
x=i;
Letter[i].x=x*640/MAX_LETTER;
Letter[i].y=0;
Letter[i].val=random(26)+'A';
Letter[i].Used=TRUE;
LetterUsed++;
}

void HideLetter(int ID)
{
/* 用填充矩形来消隐字符 */
bar(Letter[ID].x,Letter[ID].y,Letter[ID].x+16,Letter[ID].y+20);
}

void ShowLetter(int ID)
{
char str[2]={0,0};
str[0]=Letter[ID].val;
outtextxy(Letter[ID].x,Letter[ID].y,str);
}

void Check(BYTE Key)
{
int i;
char str[6];

Hits++;
for (i=0;i<MAX_LETTER;i++)
/* 击中 */
if (Letter[i].Used&&Letter[i].val==toupper(Key))
{
sound(1000);
delay(10);
KillLetter(i);
Right++;
nosound();
}
/* 显示状态 */
setfillstyle(SOLID_FILL,5);
bar(260,430,320,450);
bar(410,430,470,450);
setcolor(2);
sprintf(str," %4ld",Hits);
outtextxy(260,430,str);
sprintf(str," %4ld",Right);
outtextxy(410,430,str);
setcolor(7);
setfillstyle(SOLID_FILL,0);
}

void ShowBar()
{
FILE *bmp;
BYTE r,g,b,t;
int i,x,y;

bmp=fopen("bar.bmp","rb");
fseek(bmp,54,SEEK_SET);
for (i=0;i<16;i++)
{
setpalette(i,i);
b=fgetc(bmp)>>2;
g=fgetc(bmp)>>2;
r=fgetc(bmp)>>2;
t=fgetc(bmp)>>2;
setrgbpalette(i,r,g,b);
}
for (y=0;y<80;y++)
for (x=0;x<320;x++)
{
t=fgetc(bmp);
putpixel(x*2,479-y,t>>4);
putpixel(x*2+1,479-y,t&15);
}
fclose(bmp);
}

void SelectLevel()
{
int Steps[3]={1,2,4};
int Intervals[3]={18,9,5};
int Sel=0;
FILE *bmp;
BYTE r,g,b,t,Key;
int i,x,y;

bmp=fopen("sel.bmp","rb");
fseek(bmp,54,SEEK_SET);
for (i=0;i<16;i++)
{
setpalette(i,i);
b=fgetc(bmp)>>2;
g=fgetc(bmp)>>2;
r=fgetc(bmp)>>2;
t=fgetc(bmp)>>2;
setrgbpalette(i,r,g,b);
}
for (y=0;y<200;y++)
for (x=0;x<160;x++)
{
t=fgetc(bmp);
putpixel(x*2+160,339-y,t>>4);
putpixel(x*2+161,339-y,t&15);
}
fclose(bmp);
while (TRUE)
{
Key=toupper(AscKey());
if (Key=='A') Sel=1;
if (Key=='B') Sel=2;
if (Key=='C') Sel=3;
if (Sel) break;
}
Step=Steps[Sel-1];
Interval=Intervals[Sel-1];
cleardevice();
}

/*********************************************************/
/* 文件:TIMER.H */
/*********************************************************/
/*********************************************************/

/* 系统可用计时器的最大数目 */
# define MAXTIMER 10
# ifndef NULL
# define NULL 0
# endif

/* 计时器结构 */
struct TM
{
DWORD Interval; /* 间隔 */
DWORD LastTimer; /* 上次事件发生时间*/
BOOL Enable; /* 活动 */
BOOL Used; /* 可用 */
void (*Pointer)(); /* 事件远指针 */
};

struct TM tmTM[MAXTIMER+1];
int TimerUsed=0;

/* 获取BIOS计数器数值 */
DWORD BiosTimer(void)
{
DWORD BIOSTIMER=0;
BIOSTIMER=peek(0x0,0x46e);
BIOSTIMER<<=8;
BIOSTIMER+=peek(0x0,0x46c);
return (BIOSTIMER);
}

/* 时间事件(时钟系统核心) */
void TimerEvent()
{
int i;
DWORD TimerDiff;

for (i=1;i<=MAXTIMER;i++)
{
if (tmTM[i].Used&&tmTM[i].Enable)
{
TimerDiff=BiosTimer()-tmTM[i].LastTimer;
if (tmTM[i].Interval<=TimerDiff)
{
tmTM[i].Pointer();
tmTM[i].LastTimer=BiosTimer();
}
}
}
}

/* 创建一个时钟(成功返回时钟的句柄,否则返回NULL) */
int CreateTimer(DWORD Interval,void (*Pointer)())
{
int i=0;
if (TimerUsed==MAXTIMER) return NULL;

while (tmTM[++i].Used);

tmTM[i].Pointer=Pointer;
tmTM[i].Interval=Interval;
tmTM[i].Enable=TRUE;
tmTM[i].Used=TRUE;
tmTM[i].LastTimer=BiosTimer();

TimerUsed++;
return i;
}

/* 删除一个时钟 */
void KillTimer(int *TimerID)
{
if (tmTM[*TimerID].Used)
{
TimerUsed--;
tmTM[*TimerID].Used=FALSE;
}
*TimerID=0;
}

/* 删除所有时钟 */
void KillAllTimer()
{
int i;
for (i=0;i<=MAXTIMER;i++) tmTM[i].Used=FALSE;
TimerUsed=0;
}

⑶ c语言制作一个简单的打字游戏(落下一个字母按相应字母消去,记录分数)

游戏常量参数自行修改(字母的列数,下落最大高度,下落速度等)。

程序功能:(随机生成字母,下落,并检查按键,计分)

多线程按键检查采用新的线程与主线程同步。

独立速度:每个字母下落速度都是随机且不相同。

玩法:按键区分大小写,落到底部或被玩家按中,下落中的字母就会消失,并在该列顶部创建新的字母下落,按中1次记1分。

注意:由于字母都是随机的,如果同时下落的字母很多,可能会有重复字母出现,如果按键对应了多个同样的字母,这些字母会删掉并新建,也就是说出现按中一次记多分,说明有多个重复字母,不是BUG!

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>
#include<time.h>
#include<windows.h>
#defineW30//宽度
#defineH20//高度
#defineMinSPEED50//最慢下降速度(周期,数字越小越快)
#defineMAXSPEED5//最快下降速度
intscore=0;//总分
typedefstructletter
{
intascii;//字母ASCII码
inthIndex;//对应打印数组行下标
intwIndex;//对应打印数组列下标
intcnt;//周期计数,当cnt==speed,hIndex++并且cnt重新置0
intspeed;//下降速度
intkey;//0表示没有被按中,1表示被按中
structletter*next;
}LETR;
voidmeError(void*p);//内存申请失败
LETR*newLETR(LETR*letrHead,LETR*letrTail,intwIndex);//产生一个新的字母,并添加到链表,返回尾节点
LETR*delLETR(LETR*letrHead,LETR*letrTail,intwIndex);//删除列下标的字母节点,返回新的尾节点
LETR*init(LETR*letrHead);//初始化一组字母,返回链表尾节点
LETR*showList(LETR*letrHead,LETR*letrTail);//显示列表并检查,发现到底或被按键按中的字母删除并新建新的字母,返回新的尾节点
voidrunLetter(LETR*letrHead);//所有字母一周期计数
DWORDWINAPIcheckKey(LPVOIDlpParameter);//新线程
intmain()
{
inti;
LETR*letrHead=NULL,*letrTail=NULL;
letrHead=(LETR*)malloc(sizeof(LETR));
meError(letrHead);
letrHead->next=NULL;
srand(time(NULL));
letrTail=init(letrHead);
CreateThread(NULL,0,checkKey,letrHead,0,NULL);
letrTail=showList(letrHead,letrTail);
while(1)
{
system("cls");
printf("总分:%d ",score);
for(i=0;i<W;i++)
printf("-");
printf(" ");
runLetter(letrHead);
letrTail=showList(letrHead,letrTail);
for(i=0;i<W;i++)
printf("-");
printf(" ");
}
return0;
}
DWORDWINAPIcheckKey(LPVOIDlpParameter)
{
charc;
LETR*letrHead=NULL;
while(1)
{
letrHead=(LETR*)lpParameter;
c=getch();
while(letrHead->next)
{
if(c==letrHead->next->ascii)
letrHead->next->key=1,score++;//按键标识置1,考虑可能有多个相同随机字母,故用标识,在显示函数统一删除并新建
letrHead=letrHead->next;
}
}
return0;
}
voidrunLetter(LETR*letrHead)//所有字母一周期计数
{
while(letrHead->next)
{
if(letrHead->cnt<letrHead->speed)
letrHead->cnt++;
else
(letrHead->next->hIndex)++,letrHead->cnt=0;
letrHead=letrHead->next;
}
}
LETR*showList(LETR*letrHead,LETR*letrTail)//显示列表并检查,发现到底或被按键按中的字母删除并新建新的字母,返回新的尾节点
{
inti,j,wIndex;
charsp[H][W];
LETR*head=letrHead;
for(i=0;i<H;i++)
for(j=0;j<W;j++)
sp[i][j]='';
while(letrHead->next)
{
if(letrHead->next->hIndex>H-1||letrHead->next->key==1)//到底或者被按中就删除并新建,重新循环
{
wIndex=letrHead->next->wIndex;
letrTail=delLETR(head,letrTail,wIndex);
letrTail=newLETR(head,letrTail,wIndex);
letrHead=head;
}
else
sp[letrHead->next->hIndex][letrHead->next->wIndex]=letrHead->next->ascii;

letrHead=letrHead->next;
}
for(i=0;i<H;i++,printf(" "))
for(j=0;j<W;j++)
printf("%c",sp[i][j]);
returnletrTail;
}

LETR*init(LETR*letrHead)//初始化一组字母,返回链表尾节点
{
inti;
LETR*letrTail=NULL;
for(i=0;i<W;i++)
letrTail=newLETR(letrHead,letrTail,i);
returnletrTail;
}
LETR*newLETR(LETR*letrHead,LETR*letrTail,intwIndex)//在列下标wIndex首行,产生一个新的字母,并添加到链表,返回尾节点
{
intn;
LETR*leterNEW=(LETR*)malloc(sizeof(LETR));
meError(leterNEW);
leterNEW->next=NULL;
n=rand()%2;
if(n)//随机大小写
leterNEW->ascii=rand()%26+65;//随机一个大写字母
else
leterNEW->ascii=rand()%26+97;//随机一个小写字母
leterNEW->hIndex=0;
leterNEW->wIndex=wIndex;
leterNEW->cnt=0;
leterNEW->speed=rand()%(MinSPEED-MAXSPEED)+1+MAXSPEED;
leterNEW->key=0;
if(letrHead->next==NULL)
letrHead->next=leterNEW;
else
letrTail->next=leterNEW;
letrTail=leterNEW;
returnletrTail;
}
LETR*delLETR(LETR*letrHead,LETR*letrTail,intwIndex)//删除列下标的字母节点,返回新的尾节点
{
LETR*lhead=letrHead,*letrDel=NULL;
while(letrHead->next)
{
if(letrHead->next->wIndex==wIndex)
{
letrDel=letrHead->next;
letrHead->next=letrHead->next->next;
free(letrDel);
break;
}
letrHead=letrHead->next;
}
letrHead=lhead;
while(letrHead->next)//重置尾节点
letrHead=letrHead->next;
returnletrHead;
}
voidmeError(void*p)//内存申请失败
{
if(p==NULL)
{
printf(" 异常:内存申请失败!回车结束程序! ");
while(getch()!=' ');
exit(0);
}
}

⑷ 求用C语言编写一个简单游戏的代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

char str[10][10]={0};
int n,i=0,j=0,k=1;

main()
{
for(i=0;i<10;i++){
for(j=0;j<10;j++)
str[i][j]='.';
}
srand((unsigned) time(NULL));
i=0,j=0;
char c='A';
str[0][0]=c;
do{
top:
n=rand()%4;
switch(n){
case 0:
if(i!=0){
i--;
break;
}else
goto top;
case 1:
if(i!=9){
i++;
break;
}else
goto top;
case 2:
if(j!=0){
j--;
break;
}else
goto top;
case 3:
if(j!=9){
j++;
break;
}else
goto top;
}
if(str[i][j]!='.'){
if(n==0){
i++;
goto top;
}
else if(n==1){
i--;
goto top;
}
else if(n==2){
j++;
goto top;
}
else{
j--;
goto top;
}
}else{
str[i][j]=++c;
k++;
}
if((str[i-1>0?i-1:1-i][j]!='.')
&&(str[i+1>9?i-1:1+i][j]!='.')
&&(str[i][j-1>0?j-1:1-j]!='.')
&&(str[i][j+1>9?j-1:1+j]!='.'))
goto end;
}while(k<26);
end:
for(i=0;i<10;i++){
for(j=0;j<10;j++)
printf("%c ",str[i][j]);
printf("\n");
}
}

⑸ 求C语言小游戏源程序

新手要方便写代码,可以收藏下面几个自编函数:

  1. gtxy (6, 3) //光标定位于窗口的第6列,第3行处(准备输出,行与列都是从0算起)

  2. Color (4, 0) //设置为红字配黑底 如 Color (10, 0)则是淡绿字配黑底

  3. yinc (1,0) //隐藏光标(第二个参数设为0就隐藏,没有光标闪烁,yinc代表隐藏)

  4. kou(80,25) //设定窗口缓冲区大小为80列,25行

    下面几个是库函数,不需自己编写,只要用#include包含就可以使用。

  5. SetConsoleTitle("俄罗斯方块"); //设置窗口左上角标题栏处出现"俄罗斯方块"5个字

  6. srand( (unsigned) time(NULL) ); //初始化随机数发生器

  7. n= rand( ) % 20; //产生随机数0-19中的一个. 如 rand( )%5 就产生0-4中的一个数

    SetConsoleTitle( )函数在<windows.h>里,srand( )函数与rand( )函数要配合用,

    就是同时要用,在<stdlib.h>里。如果 rand( )%10+1 就产生1-10之中的一个数。

  8. Sleep(300); //延时300毫秒(就是程序暂停300毫秒后继续运行)

  9. system("cls"); //清屏(把窗口里的内容全部清除,光标定于(0,0)位置处)

    这两个函数都在<windows.h>里。开头4个自编函数 编写如下:

void gtxy (int x, int y) //控制光标位置的函数

{ COORD pos;

pos.X = x;

pos.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

}

void Color (short ForeColor= 7, short BackGroundColor= 0) //设定颜色的函数

{ HANDLE hl = GetStdHandle ( STD_OUTPUT_HANDLE );

SetConsoleTextAttribute ( hl, ForeColor + BackGroundColor * 0x10 );

}

声明时原型可写 void Color (short x, short y);

void yinc (int x,int y) //隐藏光标的函数

{ CONSOLE_CURSOR_INFO gb={ x , y }; //gb代表光标

SetConsoleCursorInfo ( GetStdHandle(STD_OUTPUT_HANDLE), &gb );

}

void kou(int w,int h) //设置窗口大小的函数

{HANDLE hl=GetStdHandle ( STD_OUTPUT_HANDLE ) ;

COORD size={ w , h };

SetConsoleScreenBufferSize( hl , size );

SMALL_RECT rc={ 0, 0, w, h };

SetConsoleWindowInfo( hl, 1, &rc );

}

最后这个函数,参数w是宽h是高。里边5行中第一行定义了句柄型变量hl,并给它赋值。

第二行定义了坐标型结构体变量size,它的取值决定了缓冲区的大小。第三行就是使用

size的值设置好缓冲区大小。第四行定义了变量rc,它的值决定当前窗口显示的位置与

大小(不得超过缓冲区的大小)。前两个0,0是从缓冲区左上角0列0行位置处开始,后两

个参数可以小于w和h.比如rc={0,0,w-10,h-5}; 最后一行使用rc的值设置好窗口,中间

那个参数要为" 1 "或写“ true ”才有效。

⑹ C语言简易文字冒险游戏源代码

记忆游戏

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

#include<windows.h>

#defineN10

intmain()

{inti,k,n,a[N],b[N],f=0;

srand(time(NULL));

printf("按1开始 按0退出:_");

scanf("%d",&n);

system("cls");

while(n!=0)

{for(k=0;k<N;k++)a[k]=rand()%N;

printf(" [请您牢记看到颜色的顺序] ");

for(k=0;k<N;k++)

{switch(a[k])

{case0:system("color90");printf("0:淡蓝色 ");break;//淡蓝色

case1:system("colorf0");printf("1:白色 ");break;//白色

case2:system("colorc0");printf("2:淡红色 ");break;//淡红色

case3:system("colord0");printf("3:淡紫色 ");break;//淡紫色

case4:system("color80");printf("4:灰色 ");break;//灰色

case5:system("colore0");printf("5:黄色 ");break;//黄色

case6:system("color10");printf("6:蓝色 ");break;//蓝色

case7:system("color20");printf("7:绿色 ");break;//绿色

case8:system("color30");printf("8:浅绿色 ");break;//浅绿色

case9:system("color40");printf("9:红色 ");break;//红色

}

Sleep(1500);

system("colorf");//单个控制文字颜色

Sleep(100);

}

system("cls");

printf("0:淡蓝色,1:白色,2:淡红色,3:淡紫色,4:灰色,5:黄色,6:蓝色7:绿色,8:浅绿色,9:红色 ");

printf(" 请输入颜色的顺序:");

for(k=0;k<N;k++)scanf("%d",&b[k]);

for(k=0;k<N;k++)if(a[k]==b[k])f++;

if(f==0)printf("你的记忆弱爆了0 ");

elseif(f==1)printf("你的记忆有点弱1 ");

elseif(f<5)printf("你的记忆一般<5 ");

elseprintf("你的记忆力很强! ");

Sleep(2000);

system("cls");

printf(" 按0退出 按任意键继续游戏: ");

scanf("%d",&n);

system("cls");

}

return0;

}

注:DEVc++运行通过,每输入一个数字要加入一个空格。

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

/*贪吃蛇*/

#include<stdio.h>

#include<time.h>

#include<conio.h>

#include<stdlib.h>

inthead=3,tail=0;

intmain()

{

inti,j,k=0;

intzuobiao[2][80];

longstart;

intdirection=77;

intgamespeed;

inttimeover;

intchange(charqipan[20][80],

intzuobiao[2][80],

chardirection);

zuobiao[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;

/*处理棋盘*/

charqipan[20][80];

//定义棋盘

for(i=0;i<20;i++)

for(j=0;j<80;j++)

qipan[i][j]='';//初始化棋盘

for(i=0;i<80;i++)

qipan[0][i]='_';

for(i=0;i<20;i++)

qipan[i][0]='|';

for(i=0;i<20;i++)

qipan[i][79]='|';

for(i=0;i<80;i++)

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

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

/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++6.0、turbo????)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。祝你好运*/x0dx0a/*贪吃蛇*/x0dx0a#includex0dx0a#includex0dx0a#includex0dx0a#includex0dx0aint head=3 ,tail=0;x0dx0aint main()x0dx0a{x0dx0aint i,j,k=0;x0dx0aint zuobiao[2][80];x0dx0along start;x0dx0aint direction=77;x0dx0aint gamespeed;x0dx0aint timeover;x0dx0aint change(char qipan[20][80],int zuobiao[2][80],char direction);x0dx0azuobiao[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;x0dx0a/*处理棋盘*/x0dx0achar qipan[20][80];//定义棋盘x0dx0afor(i=0;i<20;i++)x0dx0a for(j=0;j<80;j++)x0dx0aqipan[i][j]=' '//初始化棋盘x0dx0afor(i=0;i<80;i++)x0dx0aqipan[0][i]='_'x0dx0afor(i=0;i<20;i++)x0dx0aqipan[i][0]='|'x0dx0afor(i=0;i<20;i++)x0dx0aqipan[i][79]='|'x0dx0afor(i=0;i<80;i++)x0dx0aqipan[19][i]='_'x0dx0aqipan[1][1]=qipan[1][2]=qipan[1][3]='*'//初始化蛇的位置x0dx0aqipan[1][4]='#'x0dx0aprintf("This is a game of a SNAKE.\nGOOD LUCK TO YOU !\n");x0dx0aprintf("Input your game speed,please.(e.g.300)\n");x0dx0ascanf("%d",&gamespeed);x0dx0ax0dx0awhile(direction!='q')x0dx0a{x0dx0asystem("cls");x0dx0afor(i=0;i<20;i++)//打印出棋盘x0dx0afor(j=0;j<80;j++)x0dx0aprintf("%c",qipan[i][j]);x0dx0atimeover=1;x0dx0astart=clock();x0dx0awhile(!kbhit()&&(timeover=clock()-start<=gamespeed));x0dx0aif(timeover)x0dx0a{x0dx0agetch();x0dx0adirection=getch();x0dx0a}x0dx0aelsex0dx0adirection=direction;x0dx0aif(!(direction==72||direction==80||direction==75||direction==77))x0dx0a{x0dx0areturn 0;x0dx0asystem("cls");x0dx0aprintf("GAME OVER!\n");x0dx0a}x0dx0aif(!change(qipan,zuobiao,direction))x0dx0a{x0dx0adirection='q'x0dx0asystem("cls");x0dx0aprintf("GAME OVER!\n");x0dx0a}x0dx0a}x0dx0areturn 0;x0dx0a}x0dx0aint change(char qipan[20][80],int zuobiao[2][80],char direction)x0dx0a{x0dx0aint x,y;x0dx0aif(direction==72)x0dx0ax=zuobiao[0][head]-1;y=zuobiao[1][head];x0dx0aif(direction==80)x0dx0ax=zuobiao[0][head]+1;y=zuobiao[1][head];x0dx0aif(direction==75)x0dx0ax=zuobiao[0][head];y=zuobiao[0][head]-1;x0dx0aif(direction==77)x0dx0ax=zuobiao[0][head];y=zuobiao[1][head]+1;x0dx0aif(x==0||x==18||y==78||y==0)x0dx0areturn 0;x0dx0aif(qipan[x][y]!=' ')x0dx0areturn 0;x0dx0aqipan[zuobiao[0][tail]][zuobiao[1][tail]]=' 'x0dx0atail=(tail+1)%80;x0dx0aqipan[zuobiao[0][head]][zuobiao[1][head]]='*'x0dx0ahead=(head+1)%80;x0dx0azuobiao[0][head]=x;x0dx0azuobiao[1][head]=y;x0dx0aqipan[zuobiao[0][head]][zuobiao[1][head]]='#'x0dx0areturn 1;x0dx0a}