黑客24小时在线接单网站

黑客24小时在线接单网站,黑客接单,接单网站,黑客入口

游戏编程代码大全(游戏代码编程入门)

本文导读目录:

用C++编写的小游戏源代码

以下是贪吃蛇源代码:

#includeiostream.h

#includewindows.h

#includetime.h

#includestdlib.h

#includeconio.h

#define N 21

void gotoxy(int x,int y)//位置函数

COORD pos;

pos.X=2*x;

pos.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

void color(int a)//颜色函数

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);

void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)

int i,j;//初始化围墙

int wall[N+2][N+2]={{0}};

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

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

wall[i][j]=1;

color(11);

for(i=0;iN+2;i++)

for(j=0;jN+2;j++)

if(wall[i][j])

cout"■";

else cout"□" ;

coutendl;

gotoxy(N+3,1);//显示信息

color(20);

cout"按 W S A D 移动方向"endl;

gotoxy(N+3,2);

color(20);

cout"按任意键暂停"endl;

gotoxy(N+3,3);

color(20);

cout"得分:"endl;

apple[0]=rand()%N+1;//苹果

apple[1]=rand()%N+1;

gotoxy(apple[0],apple[1]);

color(12);

cout"●"endl;

int main()

int i,j;

int** snake=NULL;

int apple[2];

int score=0;

int tail[2];

int len=3;

char ch='p';

srand((unsigned)time(NULL));

init(apple);

snake=(int**)realloc(snake,sizeof(int*)*len);

for(i=0;ilen;i++)

snake[i]=(int*)malloc(sizeof(int)*2);

for(i=0;ilen;i++)

snake[i][0]=N/2;

snake[i][1]=N/2+i;

gotoxy(snake[i][0],snake[i][1]);

color(14);

cout"★"endl;

while(1)//进入消息循环

tail[0]=snake[len-1][0];

tail[1]=snake[len-1][1];

gotoxy(tail[0],tail[1]);

color(11);

cout"■"endl;

for(i=len-1;i0;i--)

snake[i][0]=snake[i-1][0];

snake[i][1]=snake[i-1][1];

gotoxy(snake[i][0],snake[i][1]);

color(14);

cout"★"endl;

if(kbhit())

gotoxy(0,N+2);

ch=getche();

switch(ch)

case 'w':snake[0][1]--;break;

case 's':snake[0][1]++;break;

case 'a':snake[0][0]--;break;

case 'd':snake[0][0]++;break;

default: break;

gotoxy(snake[0][0],snake[0][1]);

color(14);

cout"★"endl;

Sleep(abs(200-0.5*score));

if(snake[0][0]==apple[0]snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1

score++;

len++;

snake=(int**)realloc(snake,sizeof(int*)*len);

snake[len-1]=(int*)malloc(sizeof(int)*2);

apple[0]=rand()%N+1;

apple[1]=rand()%N+1;

gotoxy(apple[0],apple[1]);

color(12);

cout"●"endl;

gotoxy(N+5,3);

color(20);

coutscoreendl;

if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败

gotoxy(N/2,N/2);

color(30);

cout"失败!!!"endl;

for(i=0;ilen;i++)

free(snake[i]);

Sleep(INFINITE);

exit(0);

return 0;

}参考资料:从C++吧看来的

关于用C语言编写的小游戏的游戏代码,如黑白棋贪吃蛇等

我这儿有c语言的自写俄罗斯方块,请指教:#include

#include

#include

#include

#include

#include

#include

#define ESC 0x011b

#define UP 0x4800

#define DOWN 0x5000

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define SPACE 0x3920

#define Y 0x1579

#define N 0x316e

#define clearkbd(); while(bioskey(1)) bioskey(0); /*清空键盘缓冲队列*/

void update();

void messagebox();

void process();

void initremove();

void initinfo();

void initbox();

void initposition();

void next_shape();

typedef struct shape /*形状单一状态的记录*/

{ int attr;

int co[8];

}shape;

typedef struct RE_AB /*相对,绝对坐标记录*/

{ int Rx,Ry;

int x1,x2,y1,y2;

}RE_AB;

RE_AB RA;

shape p[19]={ { RED,0,1,1,0,1,1,2,1 }, /*数组中保证y最大的在最后,以便initposition使用*/

{ RED,0,1,1,0,1,1,1,2 },

{ RED,0,0,1,0,2,0,1,1 },

{ RED,0,0,0,1,1,1,0,2 },

{ GREEN,0,0,1,0,2,0,3,0 },

{ GREEN,0,0,0,1,0,2,0,3 },

{ CYAN,0,0,0,1,1,0,1,1 },

{ BROWN,0,0,1,0,1,1,2,1 },

{ BROWN,1,0,0,1,1,1,0,2 },

{ BLUE,1,0,2,0,1,1,0,1 },

{ BLUE,0,0,0,1,1,1,1,2 },

{ MAGENTA,0,0,0,1,0,2,1,2 },

{ MAGENTA,2,0,0,1,1,1,2,1},

{ MAGENTA,0,0,1,0,1,1,1,2 },

{ MAGENTA,0,0,0,1,1,0,2,0 },

{ YELLOW,0,2,1,0,1,1,1,2 },

{ YELLOW,0,0,1,0,2,0,2,1 },

{ YELLOW,1,0,0,0,0,1,0,2},

{ YELLOW,0,0,0,1,1,1,2,1 },

int nback,nleft,nright,r_f[12][22],rs1,rs2,xcors,xcorb,ycors,ycorb;

/*检查方快有没有左,右,下接触,游戏区内所有格子有无颜色记录数组,rs1形状记录,rs2为提示框用,记录小格子在游戏区中的位置,按键存储*/

void interrupt (*oldint)(); /*系统定时中断*/

int count_down=0,count_other=0; /*中断记时*/

void interrupt newint() /*设置新的中断程序*/

{ count_down++;

count_other++;

oldint();

void intenable() /*设置中断向量表,启动新的中断程序*/

{ oldint=getvect(0x1c);

disable();

setvect(0x1c,newint);

enable();

void intrestore() /*恢复中断向量*/

{ disable();

setvect(0x1c,oldint);

enable();

void HZ12(int x0,int y0,int w,int color,char *s) /*根据字模,在dos下显示汉字*/

/*横坐标,纵坐标,字间隔,汉字颜色,汉字字符串*/

{ FILE *fp;

register char buffer[24];

register char str[2];

unsigned long fpos;/*fpos为最终偏移动量*/

register int i,j,k;

fp=fopen(hzk12,r);/*打开12*12汉字苦*/

while(*s)/*一直到字符串结束为止*/

if(*s0)/*汉字输出*/

{ str[0]=(*s)-0xa0;

str[1]=*(s+1)-0xa0;

fpos=((str[0]-1)*94+(str[1]-1))*24L;/*计算汉字在hzk12的偏移量*/

fseek(fp,fpos,SEEK_SET);/*指针移动到当前位置*/

fread(buffer,24,1,fp);/*读取一个汉字到数组中*/

for(i=0;i12;i++)/*12行*/

for(j=0;j2;j++)/*两个字节*/

for(k=0;k8;k++)/*8位*/

if (((buffer[i*2+j](7-k))0x1)!=NULL)/*是一就画点*/

putpixel(x0+8*j+k,y0+i,color);

s+=2;/*一个汉字占两个字节,现在将指针移动两个字节*/

x0+=w;/*显示坐标也按照间隔移动*/

else/*显示非汉字字符*/

{ settextstyle(0,0,1);

setcolor(color);

str[0]=*s;str[1]=0;

outtextxy(x0,y0+3,str);/*显示单个字符*/

x0+=w-7;/*显示单个字符后的x坐标变化*/

s++;/*指针移动到下一个字节*/

fclose(fp);

void translation() /*把相对坐标解释为绝对坐标*/

{ if(RA.Rx==1)

{ RA.x1=1; RA.x2=16; }

else

{ RA.x1=16*(RA.Rx-1); RA.x2=16*RA.Rx; }

if(RA.Ry==1)

{ RA.y1=1; RA.y2=16; }

else

{ RA.y1=16*(RA.Ry-1); RA.y2=16*RA.Ry; }

int check_b() /*检查是否到达低部*/

{ int x,y,i,zf=0; /*zf为是否有颜色填充记录*/

for(i=0;i7;i++,i++)

{ x=RA.Rx+p[rs1].co[i];

y=RA.Ry+p[rs1].co[i+1];

if(y=6)

zf+=r_f[x-15][y-6+1];

if(zf==0)

return 1;

else

return 0;

int finish()

{ int tfull=0,i; /*判断顶层空间是否有填充*/

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

tfull+=r_f[i][1];

if(tfull!=0)

return 1; /*告诉judge()可以结束了*/

int check_l() /*检查形状是否与左接触*/

{ int x,y,i,zf=0;

for(i=0;i7;i++,i++)

{ x=RA.Rx+p[rs1].co[i];

y=RA.Ry+p[rs1].co[i+1];

if(y6)

zf+=r_f[x-15-1][y-6];

if(y=6x==16)

zf+=1;

if(zf==0)

return 1;

else

return 0;

int check_r() /*检查形状是否与右接触*/

{ /*zf为是否有颜色填充记录*/

int x,y,i,zf=0; /*zf为是否有颜色填充记录*/

for(i=0;i7;i++,i++)

x=RA.Rx+p[rs1].co[i];

y=RA.Ry+p[rs1].co[i+1];

if(y6)

zf+=r_f[x-15+1][y-6];

if(y=6x==25)

zf+=1;

if(zf==0)

return 1;

else

return 0;

void check_touch()

{ nback=check_b();

nleft=check_l();

nright=check_r();

void draw(int cb) /*画形状,cb=1以填充色画形状,cb=2以背景色画形状,cb=3以白色画形状*/

{ int i,recordx=RA.Rx,recordy=RA.Ry;

for(i=0;i7;i++,i++)

{ RA.Rx+=p[rs1].co[i];

RA.Ry+=p[rs1].co[i+1];

if(RA.Ry=6)

{ RA.Rx=recordx;

RA.Ry=recordy;

continue;

translation();

if(cb==1)

setfillstyle(1,p[rs1].attr);

else

if(cb==2)

setfillstyle(1,BLACK);

else

if(cb==3)

{ setfillstyle(1,WHITE);

r_f[RA.Rx-15][RA.Ry-6]=1; /*置对应数组标记元素*/

bar(RA.x1+1,RA.y1+1,RA.x2-1,RA.y2-1);

RA.Rx=recordx;

RA.Ry=recordy;

void mov(int key) /*向下,左,右移动方块*/

{ draw(2);

if(key==LEFTnleft)

RA.Rx--;

else

if(key==RIGHTnright)

RA.Rx++;

else

RA.Ry++;

nback=check_b();

if(nback) /*判断形状有没有到达底部,有就将其颜色变为白色*/

draw(1);

else

draw(3);

void change() /*变换形状*/

{ int status=rs1,buffer,i,x,y,zf=0;

if(p[rs1].attr==p[rs1+1].attr)

rs1++;

else

while(p[rs1].attr==p[rs1-1].attr)

rs1--;

for(i=0;i7;i++,i++) /*检查变化形状后是否与已存形状发生冲突*/

{ x=RA.Rx+p[rs1].co[i];

y=RA.Ry+p[rs1].co[i+1];

if(y6)

zf+=r_f[x-15][y-6];

if(zf!=0)

rs1=status;

buffer=rs1;

rs1=status;

status=buffer;

draw(2);

buffer=rs1;

rs1=status;

status=buffer;

nback=check_b(); /*判断变化后的形状是不是到达了低部,这个检查是十分必要的*/

if(nback)

draw(1);

else

draw(3);

void accelerate()

{ if(count_down=1)

{ check_touch(); /*消除上一步动作对方块状态的影响*/

count_down=0;

if(nback) /*0表示到达底部,1表示没有到达*/

mov(DOWN);

void drawbox() /*画方块所在方框*/

{ int xcor,ycor;

for(xcor=xcors;xcor=xcorb;xcor++)

for(ycor=ycors;ycor=ycorb;ycor++)

{ if(xcor==xcors||xcor==xcorb||ycor==ycors||ycor==ycorb)

{ RA.Rx=xcor;

RA.Ry=ycor;

translation();

setfillstyle(1,DARKGRAY);

bar(RA.x1+1,RA.y1+1,RA.x2-1,RA.y2-1);

void erasure(int k)

{ int i,j,recordx=RA.Rx,recordy=RA.Ry;

{ j=k-1;

for(;j0;j--)

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

{ r_f[i][j+1]=r_f[i][j];

RA.Rx=i+15;

RA.Ry=j+1+6;

translation();

if(r_f[i][j+1]==1)

setfillstyle(1,WHITE);

else

setfillstyle(1,BLACK);

bar(RA.x1+1,RA.y1+1,RA.x2-1,RA.y2-1);

RA.Rx=recordx;

RA.Ry=recordy;

void pause()

{ HZ12(450,400,15,BLACK,正常);

HZ12(450,400,15,GREEN,暂停);

for(;;)

if(bioskey(1)bioskey(0)==SPACE)

{ clearkbd();

HZ12(450,400,15,BLACK,暂停);

HZ12(450,400,15,RED,正常);

return;

void judge()

{ int i,j,full=0; /*full等于10说明某一行满,该消除了*/

if(finish()) /*判断游戏是否该结束了*/

messagebox(); /*win编程里有这个函数*/

for(j=1;j21;j++) /*判断某一行是否满了*/

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

full+=r_f[i][j];

if(full==10)

erasure(j); /*消除这行*/

full=0;

void update() /*使程序可以重新运行*/

{ cleardevice();

setbkcolor(BLACK);

initinfo(); /*提示信息初始化*/

initbox(); /*游戏框架初始化*/

srand((unsigned)time(NULL)); /*随机器函数的初始化*/

rs1=random(19);

rs2=random(19);

next_shape();

initposition(); /*方块最开始的出现位置*/

initremove(); /*记录每个方格有无颜色填充数组初始化*/

HZ12(450,400,15,RED,正常);

process();

void EXIT()

{ closegraph();

intrestore(); /*恢复中断向量*/

exit(0);

void initremove()

{ int i,j;

for(i=0;i12;i++)

for(j=0;j22;j++)

if(i==0||i==11||j==0||j==21)

r_f[i][j]=1;

else

r_f[i][j]=0;

void initinfo()

{ char aStr[2];

setcolor(RED);

outtextxy(450,100,This game's writer is:);

HZ12(450,140,15,RED,该程序作者:NULL);

outtextxy(525,110,NULL);

outtextxy(450,180,FUNCTION FOR KEYS:);

outtextxy(450,200,UP:change the shape);

outtextxy(450,210,DOWN:accelerate);

outtextxy(450,220,LEFT:move left);

outtextxy(450,230,RIGHT:move right);

outtextxy(450,240,ESC:exit this game);

outtextxy(450,250,SPACE:pause);

HZ12(450,260,20,RED,上:);

HZ12(450,280,20,RED,下:);

HZ12(450,300,20,RED,左:);

HZ12(450,320,20,RED,右:);

HZ12(450,340,20,RED,ESC:退出);

HZ12(450,360,15,RED,空格: 暂停/开始);

HZ12(450,380,15,RED,目前状态:);

HZ12(20,200,15,RED,下一个形状);

aStr[0]=24;

aStr[1]=0;

aStr[6]=0;

HZ12(480,260,12,GREEN,aStr);

HZ12(500,260,12,GREEN,( 变形 ));

aStr[0]=25;

aStr[1]=0;

HZ12(480,280,12,GREEN,aStr);

HZ12(500,280,12,GREEN,( 加速 ));

aStr[0]=27;

aStr[1]=0;

HZ12(480,300,12,GREEN,aStr);

HZ12(500,300,12,GREEN,向左);

aStr[0]=26;

aStr[1]=0;

HZ12(480,320,12,GREEN,aStr);

HZ12(500,320,12,GREEN,向右);

void messagebox()

{ int key;

setcolor(GREEN);

setfillstyle(1,DARKGRAY);

rectangle(220,200,420,300);

bar(221,201,419,299);

HZ12(280,210,15,GREEN,GAME OVER);

HZ12(275,230,15,GREEN,重新游戏: Y);

HZ12(275,270,15,GREEN,退出游戏: N);

HZ12(450,400,15,BLACK,正常);

HZ12(450,400,15,GREEN,GAME OVER);

for(;;)

if(bioskey(1))

{ key=bioskey(0);

if(key==Y)

{ clearkbd();

update();

else

if(key==N)

{ clearkbd();

EXIT();

else

clearkbd();

void initbox()

{ xcors=15; /*画游戏框*/

xcorb=26;

ycors=6;

ycorb=27;

drawbox();

xcors=2; /*画提示框*/

xcorb=7;

ycors=6;

ycorb=11;

drawbox();

void initposition()

{ RA.Rx=18;

RA.Ry=6-p[rs1].co[7];;

RA.x1=0;

RA.x2=0;

RA.y1=0;

RA.y2=0;

void next_shape() /*画下一形状提示框*/

{ int recordx=RA.Rx,recordy=RA.Ry,buffer;

RA.Rx=3;

RA.Ry=7;

draw(2);

buffer=rs1;

rs1=rs2;

rs2=buffer;

draw(1);

RA.Rx=recordx;

RA.Ry=recordy;

buffer=rs1;

rs1=rs2;

rs2=buffer;

void process() /*游戏过程*/

{ for(;;)

{ check_touch();

if(!nback)

{ rs1=rs2;

rs2=random(19); /*产生另一种方块的码数*/

initposition();

judge(); /*判断某一行是否满了和这个游戏是否可以结束了*/

draw(1);

next_shape();

if(count_other=1)

{ count_other=0;

if(bioskey(1)) /*对按键的处理*/

{ int key=bioskey(0);

clearkbd(); /*清除键盘缓冲队列*/

if(key==ESC)

EXIT();

if(key==LEFTnleftnback)

mov(LEFT);

if(key==RIGHTnrightnback)

mov(RIGHT);

if(key==UPnback)

change();

if(key==SPACE)

pause();

if(key==DOWN)

accelerate();

if(count_down=4)

{ check_touch(); /*消除上一步动作对方块状态的影响*/

count_down=0;

if(nback) /*0表示到达底部,1表示没有到达*/

mov(DOWN);

}/*for*/

main()

{ int gdriver=DETECT,gmode=0;

initgraph(gdriver,gmode,d:turboc); /*启动图形与中断部分*/

intenable();

update();

c语言小游戏代码

“贪吃蛇”C代码,在dev C++试验通过(用4个方向键控制)

#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[100];  //蛇身某节x坐标

                   int y[100];  //蛇身某节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 Color(int a);  //设定显示颜色的函数

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个位置

{Color(2);   //设定打印颜色为绿色

   gtxy(i,0);  printf("■");  //打印上边框

   gtxy(i,H); printf("■");  //打印下边框

for(i=1;iH;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的倍数(为偶数)

Color(12);   //设定打印颜色为淡红

gtxy(fod.x,fod.y); printf("●");  //到食物坐标处打印初试食物

snk.len=3;      //蛇身长初值为3节

snk.speed=350;  //刷新蛇的时间,即移动速度初值为350毫秒

snk.x[0]=W/2+1;  //蛇头横坐标要为偶数(因为W/2=39)

snk.y[0]=H/2;    //蛇头纵坐标

Color(9);   //设定打印颜色为淡蓝

gtxy(snk.x[0], snk.y[0]);  printf("■");   //打印蛇头

for(i=1;isnk.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("■");   //打印蛇身

Color(7, 0);   //恢复默认的白字黑底

return;

void keymove( )  //按键操作移动蛇

{ int key;

if( kbhit( ) )    //如有按键输入才执行下面操作

{ key=getch( );

   if (key==224)  //值为224表示按下了方向键,下面要再次获取键值

     { key=getch( );

       if(key==72dir!=2)dir=1;  //72表示按下了向上方向键

       if(key==80dir!=1)dir=2;  //80为向下

       if(key==75dir!=4)dir=3;  //75为向左

       if(key==77dir!=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[0]--; break;   //dir=1要向上移动

  case 2: snk.y[0]++; break;  //dir=2要向下移动

  case 3: snk.x[0]-=2; break;  //dir=3要向左移动

  case 4: snk.x[0]+=2; break;  //dir=4要向右移动

Color(9);

gtxy(snk.x[0], snk.y[0]); printf("■");   //打印蛇头

if (snk.x[0] == fod.x snk.y[0] == fod.y)   //如吃到食物则执行以下操作

   { printf("\7"); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //7是响铃

else Flag = 0;   //没吃到食物Flag的值为0

if(snk.speed150) 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且横坐标为偶数,则食物坐标取值成功

     Color(12);  //设定字符为红色

     gtxy(fod.x, fod.y);  printf("●");   //光标到取得的坐标处打印食物

return;

int Over( )  //判断游戏是否结束的函数

{ int  i;

Color(7);

gtxy(2,H+1); printf(“暂停键:space.”);  //以下打印一些其它信息

gtxy(2,H+2); printf(“游戏得分:%d”,score);

if (snk.x[0] == 0 || snk.x[0] == W) return 1;  //蛇头触碰左右边界

if (snk.y[0] == 0 || snk.y[0] == H) return 1;  //蛇头触碰上下边界

for (i = 1; i snk.len; i++)

{ if (snk.x[0] == snk.x[i] snk.y[0] == snk.y[i]) return 1; }  //蛇头触碰自身

return 0;    //没碰到边界及自身时就返回0

void Color(int a)   //设定颜色的函数

{  SetConsoleTextAttribute(GetStdHandle( STD_OUTPUT_HANDLE ),a );  }  

c++编程小游戏代码

以下是贪吃蛇源代码:

#includeiostream.h

#includewindows.h

#includetime.h

#includestdlib.h

#includeconio.h

#define N 21

void gotoxy(int x,int y)//位置函数{

COORD pos;

pos.X=2*x;

pos.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

void color(int a)//颜色函数{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);

void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)

int i,j;//初始化围墙

int wall[N+2][N+2]={{0}};

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

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

wall[i][j]=1;

color(11);

for(i=0;iN+2;i++)

for(j=0;jN+2;j++)

if(wall[i][j])

cout"■";

else cout"□" ;

coutendl;

gotoxy(N+3,1);//显示信息

color(20);

cout"按 W S A D 移动方向"endl;

gotoxy(N+3,2);

color(20);

cout"按任意键暂停"endl;

gotoxy(N+3,3);

color(20);

cout"得分:"endl;

apple[0]=rand()%N+1;//苹果

apple[1]=rand()%N+1;

gotoxy(apple[0],apple[1]);

color(12);

cout"●"endl;

int main()

int i,j;

int** snake=NULL;

int apple[2];

int score=0;

int tail[2];

int len=3;

char ch='p';

srand((unsigned)time(NULL));

init(apple);

snake=(int**)realloc(snake,sizeof(int*)*len);

for(i=0;ilen;i++)

snake[i]=(int*)malloc(sizeof(int)*2);

for(i=0;ilen;i++)

snake[i][0]=N/2;

snake[i][1]=N/2+i;

gotoxy(snake[i][0],snake[i][1]);

color(14);

cout"★"endl;

while(1)//进入消息循环

tail[0]=snake[len-1][0];

tail[1]=snake[len-1][1];

gotoxy(tail[0],tail[1]);

color(11);

cout"■"endl;

for(i=len-1;i0;i--)

snake[i][0]=snake[i-1][0];

snake[i][1]=snake[i-1][1];

gotoxy(snake[i][0],snake[i][1]);

color(14);

cout"★"endl;

if(kbhit())

gotoxy(0,N+2);

ch=getche();

switch(ch)

case 'w':snake[0][1]--;break;

case 's':snake[0][1]++;break;

case 'a':snake[0][0]--;break;

case 'd':snake[0][0]++;break;

default: break;

gotoxy(snake[0][0],snake[0][1]);

color(14);

cout"★"endl;

Sleep(abs(200-0.5*score));

if(snake[0][0]==apple[0]snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1

score++;

len++;

snake=(int**)realloc(snake,sizeof(int*)*len);

snake[len-1]=(int*)malloc(sizeof(int)*2);

apple[0]=rand()%N+1;

apple[1]=rand()%N+1;

gotoxy(apple[0],apple[1]);

color(12);

cout"●"endl;

gotoxy(N+5,3);

color(20);

coutscoreendl;

if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败

gotoxy(N/2,N/2);

color(30);

cout"失败!!!"endl;

for(i=0;ilen;i++)

free(snake[i]);

Sleep(INFINITE);

exit(0);

return 0;

c语言游戏编程,下落的小鸟 求代码

下落的小鸟

#includestdio.h

#includestdlib.h

#includeconio.h

#includetime.h

#includeWindows.h

int Grade = 1, Score = 0, Max_blank = 9, Distance = 18;

struct Birds{int x; int y;};  //定义一种Birds数据类型(含3个成员)

Birds *Bird = (Birds*)malloc(sizeof(Birds));  //定义Birds类型 指针变量Bird并赋初值

struct Bg{int x, y; int l_blank; Bg *pri; Bg *next;};  //定义一种Bg数据类型(含5个成员)

Bg *Bg1 = (Bg*)malloc(sizeof(Bg));  //定义Bg类型 指针变量Bg1并赋初值

void Position(int x, int y)  //光标定位函数(用于指定位置输出)

{COORD pos = { x - 1, y - 1 };

HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(Out, pos);

void Csh( )  //初始化界面

printf("══════════════════════════════════════\n");

printf(" ■■ ■■ C语言版 Flappy Bird \n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■ 瞎搞人:yyposs原创\n");

printf(" ■■ ■■ 瞎搞日期:2014.2\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■ 改编:鸣蝉百2021.7\n");

printf(" ■■ ■■ 操作:按向上方向键让小鸟起飞\n");

printf(" ■■\n");

printf(" ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■\n");

printf(" ■■ ■■ DEVc++运行通过\n");

printf("══════════════════════════════════════\n");

printf("  按键继续…");

getch( );

system("cls");

void PrFK( )  //输出方框(游戏范围区)

{int i;

Position(1, 1); printf("╔");  Position(79, 1); printf("╗");

Position(1, 24); printf("╚");  Position(79, 24); printf("╝");

for (i = 3; i = 78; i += 2){Position(i, 1); printf("═"); Position(i, 24); printf("═");}

for(i=2;i=23;i++)

{ Position(1,i); printf("║");if(i11)printf("0%d",i-1);else printf("%d",i-1);

Position(79,i); printf("║");

Position(4, 25); printf("小鸟即将出现,请准备按键起飞… ");

getch( );

Position(4, 25); printf("                                  ");

void CreatBg( )  //创建障碍物坐标(便于打印输出)

{Bg *Bg2 = (Bg*)malloc(sizeof(Bg));

Bg1-x = 90; Bg1-y = 8;  //确定障碍物的一对基本坐标(此时值是在游戏框之外)

Bg2-x = Bg1-x + Distance; Bg2-y = 9;  //下一障碍物的基本坐标x、y

Bg1-l_blank = Max_blank - Grade;  //障碍物上下两部分之间的空白距离l_blank

Bg2-l_blank = Max_blank - Grade;

Bg1-next = Bg2; Bg1-pri = Bg2;

Bg2-next = Bg1; Bg2-pri = Bg1;

void InsertBg(Bg *p)  //随机改变障碍物的y坐标,让空白通道有上下变化

{int temp;

Bg *Bgs = (Bg*)malloc(sizeof(Bg));

Bgs-x = p-pri-x + Distance;

Bgs-l_blank = Max_blank - Grade;

srand((int)time(0));  //启动随机数发生器

temp = rand( );  //产生一个随机数并赋值给temp

if (temp % 2 == 0)

{if ((temp % 4 + p-pri-y + Max_blank - Grade)21)

Bgs-y = p-pri-y + temp % 4;

else Bgs-y = p-pri-y;

else

{if ((p-pri-y - temp % 4)2)Bgs-y = p-pri-y - temp % 4;

else Bgs-y = p-pri-y;

Bgs-pri = p-pri; Bgs-next = p;

p-pri-next = Bgs; p-pri = Bgs;

void CreatBird( )  //建立小鸟的坐标(初始打印输出小鸟的位置)

{Bird-x = 41; Bird-y = 10;}

int CheckYN(Bg *q)  //判断游戏结束与否(值为0是要结束,为1没有要结束)

{Bg *p = q; int i = 0;

while (++i = 5)

{if (Bird-y23)return 0;

if (Bird-x == p-xBird-y = p-y)return 0;

if ((Bird-x == p-x || Bird-x == p-x + 1 || Bird-x == p-x + 2) Bird-y == p-y)return 0;

if (Bird-x == p-xBird-yp-y + p-l_blank)return 0;

if ((Bird-x == p-x || Bird-x == p-x + 1 || Bird-x == p-x + 2) Bird-y == p-y + p-l_blank)

return 0;

p = p-next;

return 1;

void Check_Bg(Bg *q)  //核查开头的障碍物坐标是否在游戏区内

{Bg *p = q; int i = 0, temp;

while (++i = 5)

{if (p-x-4)p = p-next;

else

{srand((int)time(0));  temp = rand();

if (temp % 2 == 0)

{if ((temp % 4 + p-y + Max_blank - Grade)21)p-y = p-y + temp % 4;

else p-y = p-y; p-x = p-pri-x + Distance;

p-l_blank = Max_blank - Grade;

else

{if ((p-y - temp % 4)2)p-y = p-y - temp % 4;

else p-y = p-y; p-x = p-pri-x + Distance;

p-l_blank = Max_blank - Grade;

void Prt_Bg(Bg *q)  //打印输出障碍物(依据其x、y坐标进行相应输出)

{Bg *p = q; int i = 0, k, j;

while (++i = 5)

{if (p-x0 p-x = 78)

{for (k = 2; kp-y; k++){Position(p-x + 1, k); printf("■"); printf("■"); printf(" ");}

Position(p-x, p-y);

printf("■"); printf("■"); printf("■"); printf(" ");

Position(p-x, p-y + p-l_blank);

printf("■"); printf("■"); printf("■"); printf(" ");

k = k + p-l_blank + 1;

for (k; k = 23; k++){Position(p-x + 1, k); printf("■"); printf("■"); printf(" ");}

p = p-next;

if (p-x == 0)

{for (j = 2; jp-y; j++){Position(p-x + 1, j); printf(" "); printf(" ");}

Position(p-x + 1, p-y);

printf(" "); printf(" "); printf(" ");

Position(p-x + 1, p-y + Max_blank - Grade);

printf(" "); printf(" "); printf(" ");

j = j + Max_blank - Grade + 1;

for (j; j = 22; j++){Position(p-x + 1, j); printf(" "); printf(" ");}

void PrtBird( )  //打印输出小鸟

{Position(Bird-x, Bird-y - 1); printf(" ");

Position(Bird-x, Bird-y); printf("Ю");

Position(38, 2); printf("Score:%d", Score);

void Loop_Bg(Bg *q)  //障碍物x坐标左移,并记录成绩

{Bg *p = q; int i = 0;

while (++i = 5)

{p-x = p-x - 1; p = p-next;

if (Bird-x == p-x)

{Score += 1;

if (Score % 4 == 0 Grade4)Grade++;

int main( )

{int i = 0; int t;

while (1)

Csh( );PrFK( );CreatBg( );

InsertBg(Bg1);InsertBg(Bg1);InsertBg(Bg1);

CreatBird( );

while (1)

{if (!CheckYN(Bg1))break;

Check_Bg(Bg1);Prt_Bg(Bg1);

PrtBird( );Loop_Bg(Bg1);

Bird-y = Bird-y + 1;

if (GetAsyncKeyState(VK_UP))  //按下了向上方向键

{Position(Bird-x, Bird-y - 1);printf(" ");

Bird-y = Bird-y - 4;

Sleep(200);  //程序延时200毫秒(数值大小决定游戏速度快慢)

i = 0;

Position(6, 25);

printf("游戏结束!  请输入:0.退出  1.重玩");

scanf("%d",t);

if (t==0)break;

system("cls"); Score = 0;

return 0;

c++游戏编程,写一个游戏编程,简单点

#includeiostream

#includeiomanip

using namespace std;

const int X = 21; //棋盘行数

const int Y = 21; //棋盘列数

char p[X][Y];  //定义棋盘

int m=0;//定义临时点,保存输入坐标

int n=0;

void display()  //输出棋盘

for(int i=0; iX; i++)

coutsetw(3)setfill(' ')i;

coutendl;

for(int i=1; iY; i++)

coutsetw(3)setfill(' ')i;

for(int j=1;jX;j++)

coutsetw(3)setfill(' ')p[i][j];

coutendl;

void black()  //黑方落子

cout"请黑方输入落子位置:\n"

"请输入落子的行数:";

cinm;

cout"请输入落子的列数:";

cinn;

if(m=0||m=X||n=Y||n=0)

cout"超出棋盘范围,请重新输入正确坐标!\n";

black();

else if((p[m][n]==1)||p[m][n]==2)

cout"该点已有棋子,请重新选取落子点!\n";

black();

else

p[m][n]=1; //黑方用1来表示

system("cls");

display();

void red()  //红方落子

cout"请红方输入落子位置:\n"

"请输入落子的行数:";

cinm;

cout"请输入落子的列数:";

cinn;

if(m=X||m=0||n=0||n=Y)

cout"超出棋盘范围,请重新输入正确坐标!\n";

red();

else if((p[m][n]==1)||p[m][n]==2)

cout"该点已有棋子,请重新选取落子点!\n";

red();

else

p[m][n]=2; //红方用2来表示

system("cls");

display();

int evalue()  //只需要判断落子点为中心的九点“米”字是否连续即可

int k = 0,r = 0;

/*斜线判断*/

for(k=3;kX-2;k++)  //两条,其中的p[k][r]!='-'是排除空子的情况

for(r=3;rY-2;r++)

if(p[k][r]!='-'p[k-2][r-2]==p[k][r]p[k-1][r-1]==p[k][r]p[k+1][r+1]==p[k][r]p[k+2][r+2]==p[k][r])

return 1;

else if(p[k][r]!='-'p[k+2][r-2]==p[k][r]p[k+1][r-1]==p[k][r]p[k-1][r+1]==p[k][r]p[k-2][r+2]==p[k][r])

return 1;

/*横线判断*/

for(k=1;kX;k++)  //p[k][r]!='-'是排除空子的情况

for(r=3;rY-2;r++)

if(p[k][r]!='-'p[k][r-2]==p[k][r]p[k][r-1]==p[k][r]p[k][r+1]==p[k][r]p[k][r+2]==p[k][r])

return 1;

/*竖线判断*/

for(k=3;kX-2;k++)  //p[k][r]!='-'是排除空子的情况

for(r=1;rY;r++)

if(p[k][r]!='-'p[k-2][r]==p[k][r]p[k-1][r]==p[k][r]p[k+1][r]==p[k][r]p[k+2][r]==p[k][r])

return 1;

    return 0;

int main()

memset(p,'-',441);  //初始化为‘-’

cout"欢迎使用简易双人对战五子棋游戏\n"

"五子棋棋谱如下:\n";

display();

while(1)

red();

if(evalue())

cout"红方赢!\n";

break;

black();

if(evalue())

cout"黑方赢!\n";

break;

return 0;

人人对战五子棋

游戏源代码是什么?

源代码(也称源程序),是指一系列人类可读的计算机语言指令。游戏源代码简单来说就是游戏最原始程序的代码。

  • 评论列表:
  •  辞眸喵叽
     发布于 2022-06-03 20:28:11  回复该评论
  • = 8;  //确定障碍物的一对基本坐标(此时值是在游戏框之外)Bg2-x = Bg1-x + Distance; Bg2-y = 9;  //下一障碍物的基本坐标x、yBg1-l_blank = Max_blank
  •  俗野佼人
     发布于 2022-06-03 08:54:18  回复该评论
  • and((unsigned)time(NULL));  //初始化随机数发生器srand( )    fod.x = rand( ) % (W - 4) + 2;  //产生在游戏框范
  •  慵吋箴词
     发布于 2022-06-03 11:31:52  回复该评论
  • ();if(key==DOWN)accelerate();}}if(count_down=4){ check_touch(); /*消除上一步动作对方块状态的影响*/cou

发表评论:

«    2024年8月    »
1234
567891011
12131415161718
19202122232425
262728293031
文章归档
标签列表

Powered By

Copyright Your WebSite.Some Rights Reserved.