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

用C语言编写的小游戏代码是什么,第1张

/也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++60、turbo)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。祝你好运/\x0d\/贪吃蛇/\x0d\#include\x0d\#include\x0d\#include\x0d\#include\x0d\int head=3 ,tail=0;\x0d\int main()\x0d\{\x0d\int i,j,k=0;\x0d\int zuobiao[2][80];\x0d\long start;\x0d\int direction=77;\x0d\int gamespeed;\x0d\int timeover;\x0d\int change(char qipan[20][80],int zuobiao[2][80],char direction);\x0d\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;\x0d\/处理棋盘/\x0d\char qipan[20][80];//定义棋盘\x0d\for(i=0;i for(j=0;jqipan[i][j]=' ';//初始化棋盘\x0d\for(i=0;iqipan[0][i]='_';\x0d\for(i=0;iqipan[i][0]='|';\x0d\for(i=0;iqipan[i][79]='|';\x0d\for(i=0;iqipan[19][i]='_';\x0d\qipan[1][1]=qipan[1][2]=qipan[1][3]='';//初始化蛇的位置\x0d\qipan[1][4]='#';\x0d\printf("This is a game of a SNAKE\nGOOD LUCK TO YOU !\n");\x0d\printf("Input your game speed,please(eg300)\n");\x0d\scanf("%d",&gamespeed);\x0d\\x0d\while(direction!='q')\x0d\{\x0d\system("cls");\x0d\for(i=0;ifor(j=0;jprintf("%c",qipan[i][j]);\x0d\timeover=1;\x0d\start=clock();\x0d\while(!kbhit()&&(timeover=clock()-startif(timeover)\x0d\{\x0d\getch();\x0d\direction=getch();\x0d\}\x0d\else\x0d\direction=direction;\x0d\if(!(direction==72||direction==80||direction==75||direction==77))\x0d\{\x0d\return 0;\x0d\system("cls");\x0d\printf("GAME OVER!\n");\x0d\}\x0d\if(!change(qipan,zuobiao,direction))\x0d\{\x0d\direction='q';\x0d\system("cls");\x0d\printf("GAME OVER!\n");\x0d\}\x0d\}\x0d\return 0;\x0d\}\x0d\int change(char qipan[20][80],int zuobiao[2][80],char direction)\x0d\{\x0d\int x,y;\x0d\if(direction==72)\x0d\x=zuobiao[0][head]-1;y=zuobiao[1][head];\x0d\if(direction==80)\x0d\x=zuobiao[0][head]+1;y=zuobiao[1][head];\x0d\if(direction==75)\x0d\x=zuobiao[0][head];y=zuobiao[0][head]-1;\x0d\if(direction==77)\x0d\x=zuobiao[0][head];y=zuobiao[1][head]+1;\x0d\if(x==0||x==18||y==78||y==0)\x0d\return 0;\x0d\if(qipan[x][y]!=' ')\x0d\return 0;\x0d\qipan[zuobiao[0][tail]][zuobiao[1][tail]]=' ';\x0d\tail=(tail+1)%80;\x0d\qipan[zuobiao[0][head]][zuobiao[1][head]]='';\x0d\head=(head+1)%80;\x0d\zuobiao[0][head]=x;\x0d\zuobiao[1][head]=y;\x0d\qipan[zuobiao[0][head]][zuobiao[1][head]]='#';\x0d\return 1;\x0d\}

输入要显示的杨辉三角的行数,会打印出金字塔型的杨辉三角,不过行数太多的话,效果不太好,可以再调整一下格式控制

复制代码

代码如下:

#include

<stdioh>

#include

<stdlibh>

int

main()

{

int

i,j,k;

int

line;

int

prev,

next;

printf("输入要查看杨辉三角的行数(大于2):");

scanf("%d",&line);

if(line

<

2)

{

printf("行数小于2,Goodbye!n");

exit(1);

}

for(i=1;

i<=line;

i++) //前两行的打印

printf("

");

printf("%6dn",1);

for(i=1;

i<=line-1;

i++)

printf("

");

printf("%6d%6dn",1,1);

prev

=

malloc(2sizeof(int));

prev[0]

=

1;

prev[1]

=

1;

for(i=3;

i<=line;

i++) //从第三行开始打印

{

next

=

malloc(isizeof(int));

next[0]

=

1;

next[i-1]

=

1;

for(j=line;

j>=i;

j--) //外部空格

{

printf("

");

}

printf("%6d",1);

for(k=2;

k<i;

k++) //数字

{

next[k-1]

=

prev[k-2]

+

prev[k-1];

printf("%6d",next[k-1]);

}

}

printf("%6dn",1);

free(prev);

prev

=

next;

}

free(next);

return

0;

}

#include<reg52h>

#include<intrinsh>

//#include<mathh>

#include<stdlibh>

#include<lcd12864h>

sbit up = P1^0; //上

sbit down = P1^1; //下

sbit left = P1^2; //左

sbit right = P1^3; //右

sbit restart = P1^4; //功能键

#define snake_max_body 22

#define Key_Up 1

#define Key_Down 4

#define Key_Left 2

#define Key_Right 3

uchar Key_V_temp=0; //上次按键值

uchar Key_Value;

const uchar code failure[]={"很遗憾,你输了"};

const uchar code maker[]={"设计者:机协成员"};

const uchar code huiz[]={"会长:方吉桐"};

const uchar code guanggao[]={"机器人协会欢迎你"};

const uchar code t[]={

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x0E,0x00,0x00,0x00,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0xFF,0xF7,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xCE,0xFF,0xFF,0xF7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x0E,0xE0,0x00,0x07,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFE,0xFF,0xFF,0xF7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0x9F,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xDF,0xCF,0xFE,0xFF,0xFF,0xE7,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xE0,0x0F,0xC0,0x0E,0xFF,0xFF,0xE7,0x00,0x00,0x00,0x7F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x7F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFD,0xE1,0xF1,0xF8,0xFF,0x9F,0xFF,0x7F,0xF8,0x00,0xFD,0xFB,0xFF,0x8F,0xFF,

0xFF,0xFD,0xED,0xF5,0xBA,0xFF,0xBF,0xFF,0xBF,0xFB,0xDE,0xFD,0xF3,0xFF,0x77,0xFF,

0xFF,0xE0,0x2D,0xF1,0xA8,0xFF,0x1F,0xF8,0x00,0xF8,0x00,0xF0,0x40,0xFE,0xFB,0xFF,

0xFF,0xF8,0xED,0xFF,0xB7,0xFF,0x1F,0xFB,0xFF,0xFB,0xDE,0xFD,0xF6,0xF9,0x04,0xFF,

0xFF,0xF5,0x6D,0xFC,0x03,0xFE,0x4F,0xFA,0x4E,0xF8,0x00,0xFD,0x36,0x7F,0xFF,0xFF,

0xFF,0xED,0xAD,0xFF,0x9F,0xFC,0xE7,0xFB,0x6E,0xFB,0xDE,0xFD,0x6E,0xBC,0x00,0xFF,

0xFF,0xFD,0xED,0xF1,0x28,0xF9,0xF3,0xFB,0x6C,0xFB,0xDE,0xFC,0xDE,0xBF,0x7F,0xFF,

0xFF,0xFD,0xDD,0x74,0x62,0xF3,0xF9,0xFB,0xFF,0xFB,0xDA,0xFD,0xBE,0xFE,0xFB,0xFF,

0xFF,0xFD,0xBE,0x71,0xF8,0xE7,0xFC,0xF2,0x00,0xF7,0xDC,0xFD,0x7C,0xFC,0x01,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

};

//const uchar zhi[]={

//0xFF,0xF3,0x85,0xE8,0xCC,0xED,0x8D,0xEF};

struct //结构体:食物

{

uchar X;

uchar Y;

uchar Yes;

}Food;

struct //结构体:小蛇

{

uchar X[snake_max_body]; //蛇的X坐标

uchar Y[snake_max_body]; //蛇的Y坐标

uchar Log; //蛇的长度

uchar Life; //蛇的生命

uchar Score; //蛇的分数

uchar Level; //蛇的等级

}Snake;

void Init_time1() //定时器初始化,用来产生随机数

{

EA=1;

ET1=1;

TMOD|=0X20;

TH1=0X01;

TL1=0X01;

TR1=1;

}

void snake_init() //贪吃蛇初始化场地

{

uchar i;

line(0,0,0,80);

line(0,80,50,80);

line(50,80,50,0);

line(50,0,0,0);

SnakeLog=2; //定义初始化蛇的长度

SnakeLife=0;

SnakeScore=0;

// FoodYes=1;

Key_Value=0;

for(i=0;i<SnakeLog;i++) //将蛇给赋值

{

SnakeX[i]=i+2;

SnakeY[i]=2;

}

for(i=0;i<SnakeLog;i++) //将蛇给画出来

{

dot(SnakeX[i],SnakeY[i]);

}

}

key_press() //按键检测

{

// uchar key;

up=1;

if(!up)

{

delay_ms(5);

if(!up)

{

Key_Value=1;

}

while(!up);

}

down=1;

if(!down)

{

delay_ms(5);

if(!down)

{

Key_Value=4;

}

while(!down);

}

left=1;

if(!left)

{

delay_ms(5);

if(!left)

{

Key_Value=2;

}

while(!left);

}

right=1;

if(!right)

{

delay_ms(5);

if(!right)

{

Key_Value=3;

}

while(!up);

}

// return Key_Value;

}

void Run_snake(void) //蛇移动

{

uchar i=0;

if((Key_Value==Key_Right&&Key_V_temp!=Key_Left)||(Key_Value==Key_Left&&Key_V_temp==Key_Right))

{

offdot(SnakeX[0],SnakeY[0]); //先把蛇尾给熄灭掉

for(i=0;i<SnakeLog-1;i++) //蛇身都是它前一段的蛇身的位置

{

SnakeX[i]=SnakeX[i+1];

SnakeY[i]=SnakeY[i+1];

}

SnakeX[SnakeLog-1]=SnakeX[SnakeLog-2]+0;

SnakeY[SnakeLog-1]=SnakeY[SnakeLog-2]+1; //蛇头向要求的方向移动

for(i=0;i<SnakeLog;i++) //蛇显示函数

{

dot(SnakeX[i],SnakeY[i]);

}

Key_V_temp=Key_Right; //保存现在的值,以便下次按下时使用

}

if((Key_Value==Key_Left&&Key_V_temp!=Key_Right)||(Key_Value==Key_Right&&Key_V_temp==Key_Left))

{

offdot(SnakeX[0],SnakeY[0]);

for(i=0;i<SnakeLog-1;i++)

{

SnakeX[i]=SnakeX[i+1];

SnakeY[i]=SnakeY[i+1];

}

SnakeX[SnakeLog-1]=SnakeX[SnakeLog-2]+0;

SnakeY[SnakeLog-1]=SnakeY[SnakeLog-2]-1;

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

{

dot(SnakeX[i],SnakeY[i]);

}

Key_V_temp=Key_Left;

}

if(( Key_Value==Key_Up&&Key_V_temp!=Key_Down)||( Key_Value==Key_Down&&Key_V_temp==Key_Up))

{

offdot(SnakeX[0],SnakeY[0]);

for(i=0;i<SnakeLog-1;i++)

{

SnakeX[i]=SnakeX[i+1];

SnakeY[i]=SnakeY[i+1];

}

SnakeX[SnakeLog-1]=SnakeX[SnakeLog-2]-1;

SnakeY[SnakeLog-1]=SnakeY[SnakeLog-2]+0;

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

{

dot(SnakeX[i],SnakeY[i]);

}

Key_V_temp=Key_Up;

}

if(( Key_Value==Key_Down&&Key_V_temp!=Key_Up)||( Key_Value==Key_Up&&Key_V_temp==Key_Down))

{

offdot(SnakeX[0],SnakeY[0]);

for(i=0;i<SnakeLog-1;i++)

{

SnakeX[i]=SnakeX[i+1];

SnakeY[i]=SnakeY[i+1];

}

SnakeX[SnakeLog-1]=SnakeX[SnakeLog-2]+1;

SnakeY[SnakeLog-1]=SnakeY[SnakeLog-2]+0;

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

{

dot(SnakeX[i],SnakeY[i]);

}

Key_V_temp=Key_Down;

}

if((SnakeX[SnakeLog-1]>=50)||(SnakeY[SnakeLog-1]>=80)||(SnakeX[SnakeLog-1]==0)||(SnakeY[SnakeLog-1]==0))//判蛇头是否撞到墙壁

{

SnakeLife=1;

}

for(i=3;i<SnakeLog;i++) //从第三节开始判断蛇头是否咬到自己

{

if((SnakeX[i]==SnakeX[0])&&(SnakeY[i]==SnakeY[0]))

{

SnakeLife=1;

}

}

/ if(SnakeLife==1)

{

i=Key_Value;

// Display_dead( i);

// clear();

write_comd(0x34);

}/

/ if(SnakeLog==snake_max_body) //判断蛇是否最长了

{

//i=Key_Value;

write_comd(0x34);

// clear();

write_comd(0x30);

// Display_Pass(i);

}/

if(SnakeX[SnakeLog-1]==FoodX&&SnakeY[SnakeLog-1]==FoodY)//判蛇是否吃到食物

{

SnakeLog++; //蛇节数加1

SnakeX[SnakeLog-1]=FoodX;

SnakeY[SnakeLog-1]=FoodY;

SnakeScore++;

FoodYes=1; //食物标志置1

}

if(FoodYes==0) //放果子程序

{

dot(FoodX,FoodY);

}

if(FoodYes==1)

{

while(1)

{

FoodX=TL1/5; //获得随机数

FoodY=TL1/4;

for(i=0;i<SnakeLog;i++) //判断产生的食物坐标是否和蛇身重合

{

if((FoodX==SnakeX[i])&&(FoodX==SnakeY[i]))

break;

}

if(i==SnakeLog)

{

FoodYes=0;

break; //产生有效的食物坐标

}

}

}

}

void main()

{

lcd_init(); //初始化LCD

Init_time1();

clear();

_nop_();_nop_();_nop_();

map(t);

delay_ms(1400);

clear();

snake_init();

// snake_food();

FoodX=TL1/5;

FoodY=TL1/4;

dot(FoodX,FoodY);

// dot(TL1&49,TL1&79);

// dot(TL1&49,TL1&79);

while(1)

{

if(SnakeLife)

{

// clear();

write_comd(0x34);

write_comd(0x30);

delay_ms(100);

display(0x80,7,failure);

display(0x90,8,maker);

display(0x88,6,huiz);

display(0x98,8,guanggao);

}

else

{

key_press();

Run_snake();

write_comd(0x36);

}

if(SnakeScore<15)

delay_ms(150-10SnakeScore);

else

delay_ms(5);

}

}

黑白棋游戏

#include "graphicsh" /图形系统头文件/

#define LEFT 0x4b00 /光标左键值/

#define RIGHT 0x4d00 /光标右键值/

#define DOWN 0x5000 /光标下键值/

#define UP 0x4800 /光标上键值/

#define ESC 0x011b / ESC键值/

#define ENTER 0x1c0d / 回车键值/

int a[8][8]={0},key,score1,score2;/具体分数以及按键与存放棋子的变量/

char playone[3],playtwo[3];/两个人的得分转换成字符串输出/

void playtoplay(void);/人人对战函数/

void DrawQp(void);/画棋盘函数/

void SetPlayColor(int x);/设置棋子第一次的颜色/

void MoveColor(int x,int y);/恢复原来棋盘状态/

int QpChange(int x,int y,int z);/判断棋盘的变化/

void DoScore(void);/处理分数/

void PrintScore(int n);/输出成绩/

void playWin(void);/输出胜利者信息/

/主函数/

void main(void)

{

int gd=DETECT,gr;

initgraph(&gd,&gr,"c:\\tc"); /初始化图形系统/

DrawQp();/画棋盘/

playtoplay();/人人对战/

getch();

closegraph();/关闭图形系统/

}

void DrawQp()/画棋盘/

{

int i,j;

score1=score2=0;/棋手一开始得分都为0/

setbkcolor(BLUE);

for(i=100;i<=420;i+=40)

{

line(100,i,420,i);/画水平线/

line(i,100,i,420); /画垂直线/

}

setcolor(0);/取消圆周围的一圈东西/

setfillstyle(SOLID_FILL,15);/白色实体填充模式/

fillellipse(500,200,15,15); /在显示得分的位置画棋/

setfillstyle(SOLID_FILL,8); /黑色实体填充模式/

fillellipse(500,300,15,15);

a[3][3]=a[4][4]=1;/初始两个黑棋/

a[3][4]=a[4][3]=2;/初始两个白棋/

setfillstyle(SOLID_FILL,WHITE);

fillellipse(120+340,120+340,15,15);

fillellipse(120+440,120+440,15,15);

setfillstyle(SOLID_FILL,8);

fillellipse(120+340,120+440,15,15);

fillellipse(120+440,120+340,15,15);

score1=score2=2; /有棋后改变分数/

DoScore();/输出开始分数/

}

void playtoplay()/人人对战/

{

int x,y,t=1,i,j,cc=0;

while(1)/换棋手走棋/

{

x=120,y=80;/每次棋子一开始出来的坐标,x为行坐标,y为列坐标/

while(1) /具体一个棋手走棋的过程/

{

PrintScore(1);/输出棋手1的成绩/

PrintScore(2);/输出棋手2的成绩/

SetPlayColor(t);/t变量是用来判断棋手所执棋子的颜色/

fillellipse(x,y,15,15);

key=bioskey(0);/接收按键/

if(key==ESC)/跳出游戏/

break;

else

if(key==ENTER)/如果按键确定就可以跳出循环/

{

if(y!=80&&a[(x-120)/40][(y-120)/40]!=1

&&a[(x-120)/40][(y-120)/40]!=2)/如果落子位置没有棋子/

{

if(t%2==1)/如果是棋手1移动/

a[(x-120)/40][(y-120)/40]=1;

else/否则棋手2移动/

a[(x-120)/40][(y-120)/40]=2;

if(!QpChange(x,y,t))/落子后判断棋盘的变化/

{

a[(x-120)/40][(y-120)/40]=0;/恢复空格状态/

cc++;/开始统计尝试次数/

if(cc>=64-score1-score2) /如果尝试超过空格数则停步/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

break;

}

else

continue;/如果按键无效/

}

DoScore();/分数的改变/

break;/棋盘变化了,则轮对方走棋/

}

else/已经有棋子就继续按键/

continue;

}

else /四个方向按键的判断/

if(key==LEFT&&x>120)/左方向键/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

x-=40;

fillellipse(x,y,15,15);

}

else

if(key==RIGHT&&x<400&&y>80)/右方向键/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

x+=40;

fillellipse(x,y,15,15);

}

else

if(key==UP&&y>120)/上方向键/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

y-=40;

fillellipse(x,y,15,15);

}

else

if(key==DOWN&&y<400)/下方向键/

{

MoveColor(x,y);

fillellipse(x,y,15,15);

SetPlayColor(t);

y+=40;

fillellipse(x,y,15,15);

}

}

if(key==ESC)/结束游戏/

break;

if((score1+score2)==64||score1==0||score2==0)/格子已经占满或一方棋子为0判断胜负/

{

playWin();/输出最后结果/

break;

}

t=t%2+1; /一方走后,改变棋子颜色即轮对方走/

cc=0; /计数值恢复为0/

} /endwhile/

}

void SetPlayColor(int t)/设置棋子颜色/

{

if(t%2==1)

setfillstyle(SOLID_FILL,15);/白色/

else

setfillstyle(SOLID_FILL,8);/灰色/

}

void MoveColor(int x,int y)/走了一步后恢复原来格子的状态/

{

if(y<100)/如果是从起点出发就恢复蓝色/

setfillstyle(SOLID_FILL,BLUE);

else/其他情况如果是1就恢复白色棋子,2恢复黑色棋子,或恢复蓝色棋盘/

switch(a[(x-120)/40][(y-120)/40])

{

case 1:

setfillstyle(SOLID_FILL,15);break; /白色/

case 2:

setfillstyle(SOLID_FILL,8);break; /黑色/

default:

setfillstyle(SOLID_FILL,BLUE); /蓝色/

}

}

int QpChange(int x,int y,int t)/判断棋盘的变化/

{

int i,j,k,kk,ii,jj,yes;

yes=0;

i=(x-120)/40; /计算数组元素的行下标/

j=(y-120)/40; /计算数组元素的列下标/

SetPlayColor(t);/设置棋子变化的颜色/

/开始往8个方向判断变化/

if(j<6)/往右边/

{

for(k=j+1;k<8;k++)

if(a[i][k]==a[i][j]||a[i][k]==0)/遇到自己的棋子或空格结束/

break;

if(a[i][k]!=0&&k<8)

{

for(kk=j+1;kk<k&&k<8;kk++)/判断右边/

{

a[i][kk]=a[i][j]; /改变棋子颜色/

fillellipse(120+i40,120+kk40,15,15);

}

if(kk!=j+1) /条件成立则有棋子改变过颜色/

yes=1;

}

}

if(j>1)/判断左边/

{

for(k=j-1;k>=0;k--)

if(a[i][k]==a[i][j]||!a[i][k])

break;

if(a[i][k]!=0&&k>=0)

{

for(kk=j-1;kk>k&&k>=0;kk--)

{

a[i][kk]=a[i][j];

fillellipse(120+i40,120+kk40,15,15);

}

if(kk!=j-1)

yes=1;

}

}

if(i<6)/判断下边/

{

for(k=i+1;k<8;k++)

if(a[k][j]==a[i][j]||!a[k][j])

break;

if(a[k][j]!=0&&k<8)

{

for(kk=i+1;kk<k&&k<8;kk++)

{

a[kk][j]=a[i][j];

fillellipse(120+kk40,120+j40,15,15);

}

if(kk!=i+1)

yes=1;

}

}

if(i>1)/判断上边/

{

for(k=i-1;k>=0;k--)

if(a[k][j]==a[i][j]||!a[k][j])

break;

if(a[k][j]!=0&&k>=0)

{

for(kk=i-1;kk>k&&k>=0;kk--)

{

a[kk][j]=a[i][j];

fillellipse(120+kk40,120+j40,15,15);

}

if(kk!=i-1)

yes=1;

}

}

if(i>1&&j<6)/右上/

{

for(k=i-1,kk=j+1;k>=0&&kk<8;k--,kk++)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]&&k>=0&&kk<8)

{

for(ii=i-1,jj=j+1;ii>k&&k>=0;ii--,jj++)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii40,120+jj40,15,15);

}

if(ii!=i-1)

yes=1;

}

}

if(i<6&&j>1)/左下/

{

for(k=i+1,kk=j-1;k<8&&kk>=0;k++,kk--)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0&&k<8&&kk>=0)

{

for(ii=i+1,jj=j-1;ii<k&&k<8;ii++,jj--)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii40,120+jj40,15,15);

}

if(ii!=i+1)

yes=1;

}

}

if(i>1&&j>1)/左上/

{

for(k=i-1,kk=j-1;k>=0&&kk>=0;k--,kk--)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0&&k>=0&&kk>=0)

{

for(ii=i-1,jj=j-1;ii>k&&k>=0;ii--,jj--)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii40,120+jj40,15,15);

}

if(ii!=i-1)

yes=1;

}

}

if(i<6&&j<6)/ 右下/

{

for(k=i+1,kk=j+1;kk<8&&kk<8;k++,kk++)

if(a[k][kk]==a[i][j]||!a[k][kk])

break;

if(a[k][kk]!=0&&kk<8&&k<8)

{

for(ii=i+1,jj=j+1;ii<k&&k<8;ii++,jj++)

{

a[ii][jj]=a[i][j];

fillellipse(120+ii40,120+jj40,15,15);

}

if(ii!=i+1)

yes=1;

}

}

return yes;/返回是否改变过棋子颜色的标记/

}

void DoScore()/处理分数/

{

int i,j;

score1=score2=0;/重新开始计分数/

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

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

if(a[i][j]==1)/分别统计两个人的分数/

score1++;

else

if(a[i][j]==2)

score2++;

}

void PrintScore(int playnum)/输出成绩/

{

if(playnum==1)/清除以前的成绩/

{

setfillstyle(SOLID_FILL,BLUE);

bar(550,100,640,400);

}

setcolor(RED);

settextstyle(0,0,4);/设置文本输出样式/

if(playnum==1)/判断输出哪个棋手的分,在不同的位置输出/

{

sprintf(playone,"%d",score1);

outtextxy(550,200,playone);

}

else

{

sprintf(playtwo,"%d",score2);

outtextxy(550,300,playtwo);

}

setcolor(0);

}

void playWin()/输出最后的胜利者结果/

{

settextstyle(0,0,4);

setcolor(12);

if(score2>score1)/开始判断最后的结果/

outtextxy(100,50,"black win!");

else

if(score2<score1)

outtextxy(100,50,"white win!");

else

outtextxy(60,50,"you all win!");

}

五子棋游戏

/五子棋/

#include<stdioh>

#include<stdlibh>

#include<graphicsh>

#include<biosh>

#include<conioh>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

#define SPACE 0x3920

#define BILI 20

#define JZ 4

#define JS 3

#define N 19

int box[N][N];

int step_x,step_y ;

int key ;

int flag=1 ;

void draw_box();

void draw_cicle(int x,int y,int color);

void change();

void judgewho(int x,int y);

void judgekey();

int judgeresult(int x,int y);

void attentoin();

void attention()

{

char ch ;

window(1,1,80,25);

textbackground(LIGHTBLUE);

textcolor(YELLOW);

clrscr();

gotoxy(15,2);

printf("游戏 *** 作规则:");

gotoxy(15,4);

printf("Play Rules:");

gotoxy(15,6);

printf("1、按左右上下方向键移动棋子");

gotoxy(15,8);

printf("1 Press Left,Right,Up,Down Key to move Piece");

gotoxy(15,10);

printf("2、按空格确定落棋子");

gotoxy(15,12);

printf("2 Press Space to place the Piece");

gotoxy(15,14);

printf("3、禁止在棋盘外按空格");

gotoxy(15,16);

printf("3 DO NOT press Space outside of the chessboard");

gotoxy(15,18);

printf("你是否接受上述的游戏规则(Y/N)");

gotoxy(15,20);

printf("Do you accept the above Playing Rules [Y/N]:");

while(1)

{

gotoxy(60,20);

ch=getche();

if(ch=='Y'||ch=='y')

break ;

else if(ch=='N'||ch=='n')

{

window(1,1,80,25);

textbackground(BLACK);

textcolor(LIGHTGRAY);

clrscr();

exit(0);

}

gotoxy(51,12);

printf(" ");

}

}

void draw_box()

{

int x1,x2,y1,y2 ;

setbkcolor(LIGHTBLUE);

setcolor(YELLOW);

gotoxy(7,2);

printf("Left, Right, Up, Down KEY to move, Space to put, ESC-quit");

for(x1=1,y1=1,y2=18;x1<=18;x1++)

line((x1+JZ)BILI,(y1+JS)BILI,(x1+JZ)BILI,(y2+JS)BILI);

for(x1=1,y1=1,x2=18;y1<=18;y1++)

line((x1+JZ)BILI,(y1+JS)BILI,(x2+JZ)BILI,(y1+JS)BILI);

for(x1=1;x1<=18;x1++)

for(y1=1;y1<=18;y1++)

box[x1][y1]=0 ;

}

void draw_circle(int x,int y,int color)

{

setcolor(color);

setlinestyle(SOLID_LINE,0,1);

x=(x+JZ)BILI ;

y=(y+JS)BILI ;

circle(x,y,8);

}

void judgekey()

{

int i ;

int j ;

switch(key)

{

case LEFT :

if(step_x-1<0)

break ;

else

{

for(i=step_x-1,j=step_y;i>=1;i--)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(i<1)break ;

step_x=i ;

judgewho(step_x,step_y);

break ;

}

case RIGHT :

if(step_x+1>18)

break ;

else

{

for(i=step_x+1,j=step_y;i<=18;i++)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(i>18)break ;

step_x=i ;

judgewho(step_x,step_y);

break ;

}

case DOWN :

if((step_y+1)>18)

break ;

else

{

for(i=step_x,j=step_y+1;j<=18;j++)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(j>18)break ;

step_y=j ;

judgewho(step_x,step_y);

break ;

}

case UP :

if((step_y-1)<0)

break ;

else

{

for(i=step_x,j=step_y-1;j>=1;j--)

if(box[i][j]==0)

{

draw_circle(step_x,step_y,LIGHTBLUE);

break ;

}

if(j<1)break ;

step_y=j ;

judgewho(step_x,step_y);

break ;

}

case ESC :

break ;

case SPACE :

if(step_x>=1&&step_x<=18&&step_y>=1&&step_y<=18)

{

if(box[step_x][step_y]==0)

{

box[step_x][step_y]=flag ;

if(judgeresult(step_x,step_y)==1)

{

sound(1000);

delay(1000);

nosound();

gotoxy(30,4);

if(flag==1)

{

setbkcolor(BLUE);

cleardevice();

setviewport(100,100,540,380,1);

/定义一个图形窗口/

setfillstyle(1,2);

/绿色以实填充/

setcolor(YELLOW);

rectangle(0,0,439,279);

floodfill(50,50,14);

setcolor(12);

settextstyle(1,0,5);

/三重笔划字体, 水平放5倍/

outtextxy(20,20,"The White Win !");

setcolor(15);

settextstyle(3,0,5);

/无衬笔划字体, 水平放大5倍/

outtextxy(120,120,"The White Win !");

setcolor(14);

settextstyle(2,0,8);

getch();

closegraph();

exit(0);

}

if(flag==2)

{

setbkcolor(BLUE);

cleardevice();

setviewport(100,100,540,380,1);

/定义一个图形窗口/

setfillstyle(1,2);

/绿色以实填充/

setcolor(YELLOW);

rectangle(0,0,439,279);

floodfill(50,50,14);

setcolor(12);

settextstyle(1,0,8);

/三重笔划字体, 水平放大8倍/

outtextxy(20,20,"The Red Win !");

setcolor(15);

settextstyle(3,0,5);

/无衬笔划字体, 水平放大5倍/

outtextxy(120,120,"The Red Win !");

setcolor(14);

settextstyle(2,0,8);

getch();

closegraph();

exit(0);

}

}

change();

break ;

}

}

else

break ;

}

}

void change()

{

if(flag==1)

flag=2 ;

else

flag=1 ;

}

void judgewho(int x,int y)

{

if(flag==1)

draw_circle(x,y,15);

if(flag==2)

draw_circle(x,y,4);

}

int judgeresult(int x,int y)

{

int j,k,n1,n2 ;

while(1)

{

n1=0 ;

n2=0 ;

/水平向左数/

for(j=x,k=y;j>=1;j--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/水平向右数/

for(j=x,k=y;j<=18;j++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1>=5)

{

return(1);

break ;

}

/垂直向上数/

n1=0 ;

n2=0 ;

for(j=x,k=y;k>=1;k--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/垂直向下数/

for(j=x,k=y;k<=18;k++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1>=5)

{

return(1);

break ;

}

/向左上方数/

n1=0 ;

n2=0 ;

for(j=x,k=y;j>=1,k>=1;j--,k--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/向右下方数/

for(j=x,k=y;j<=18,k<=18;j++,k++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1>=5)

{

return(1);

break ;

}

/向右上方数/

n1=0 ;

n2=0 ;

for(j=x,k=y;j<=18,k>=1;j++,k--)

{

if(box[j][k]==flag)

n1++;

else

break ;

}

/向左下方数/

for(j=x,k=y;j>=1,k<=18;j--,k++)

{

if(box[j][k]==flag)

n2++;

else

break ;

}

if(n1+n2-1>=5)

{

return(1);

break ;

}

return(0);

break ;

}

}

void main()

{

int gdriver=VGA,gmode=VGAHI;

clrscr();

attention();

initgraph(&gdriver,&gmode,"c:\\tc");

/ setwritemode(XOR_PUT);/

flag=1 ;

draw_box();

do

{

step_x=0 ;

step_y=0 ;

/draw_circle(step_x,step_y,8); /

judgewho(step_x-1,step_y-1);

do

{

while(bioskey(1)==0);

key=bioskey(0);

judgekey();

}

while(key!=SPACE&&key!=ESC);

}

while(key!=ESC);

closegraph();

}

定义三个字符变量

因为A,B,C有可能和X,Y,Z中一人比

所以利用三层循环,找出所有的情况

有因为A

对手不能和B相同

所有在对B的对手所有情况进行寻找时

进行条件判断

即A!=B

同理C

对手不能和A与B的对手相同

所以有A!=C&&B!=C

最后有A说他不和X比,C说他不和X,Z比

A!='X'&&C!='X'&&C!='Z'

#include

<stdioh>

#define

N

4

int

main(void)

{

char

A,B,C;

for(A='X';A<='Z';A++)

{

for(B='X';B<='Z';B++)

{

if(A!=B)

{

for(C='X';C<='Z';C++)

{

if(A!=C&&B!=C)

{

if(A!='X'&&C!='X'&&C!='Z')

{

printf("\nAvs%c,Bvs%c,Cvs%c",A,B,C);

}

}

}

}

}

}

}

以上就是关于用C语言编写的小游戏代码是什么全部的内容,包括:用C语言编写的小游戏代码是什么、C语言小程序 杨辉三角示例代码、跪求一个用C语言写的小程序,答辩用!!!!!!#!@###!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9631905.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存