c++游戲編程代碼大全(c++游戲代碼簡單)
本篇文章給大家談談c++游戲編程代碼大全,以及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 /*形狀單一狀態(tài)的記錄*/
{ 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 }, /*數(shù)組中保證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;
/*檢查方快有沒有左,右,下接觸,游戲區(qū)內(nèi)所有格子有無顏色記錄數(shù)組,rs1形狀記錄,rs2為提示框用,記錄小格子在游戲區(qū)中的位置,按鍵存儲*/
void interrupt (*oldint)(); /*系統(tǒng)定時中斷*/
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) /*根據(jù)字模,在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);/*讀取一個漢字到數(shù)組中*/
for(i=0;i12;i++)/*12行*/
for(j=0;j2;j++)/*兩個字節(jié)*/
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;/*一個漢字占兩個字節(jié),現(xiàn)在將指針移動兩個字節(jié)*/
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++;/*指針移動到下一個字節(jié)*/
}
}
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; /*置對應數(shù)組標記元素*/
}
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) /*判斷形狀有沒有到達底部,有就將其顏色變?yōu)榘咨?/
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++) /*檢查變化形狀后是否與已存形狀發(fā)生沖突*/
{ 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(); /*消除上一步動作對方塊狀態(tài)的影響*/
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編程里有這個函數(shù)*/
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)); /*隨機器函數(shù)的初始化*/
rs1=random(19);
rs2=random(19);
next_shape();
initposition(); /*方塊最開始的出現(xiàn)位置*/
initremove(); /*記錄每個方格有無顏色填充數(shù)組初始化*/
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,目前狀態(tài):);
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); /*產(chǎn)生另一種方塊的碼數(shù)*/
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(); /*消除上一步動作對方塊狀態(tài)的影響*/
count_down=0;
if(nback) /*0表示到達底部,1表示沒有到達*/
mov(DOWN);
}
}/*for*/
}
main()
{ int gdriver=DETECT,gmode=0;
initgraph(gdriver,gmode,d:turboc); /*啟動圖形與中斷部分*/
intenable();
update();
}
用C語言編寫的小游戲代碼是什么?
“猜數(shù)字小游戲”,每個數(shù)字后按空格,最后按回車確認
#includestdio.h
#includestdlib.h
#includetime.h
int a[4],b[4];
int count=0;? //計算猜測次數(shù)
void csh( );? //初始化
void start( );? //開始游戲
int main( )
{ csh( );
start( );
}
void csh( )? //初始化
{ printf("\n\n???????? 猜? 數(shù)? 字? 小? 游? 戲\n\n");
printf(“? ??猜四個數(shù)字,如數(shù)字與順序都正確記為A,數(shù)字正確位置不對記為B.\n”);
}
void start( )? //開始游戲
{int m,n;? //m是完全猜對的個數(shù),n是順序不對的個數(shù)
while(1)
{srand((unsigned)time(NULL));? //初始化隨機數(shù)發(fā)生器srand( )
while(1) { for(int i=0;i4;i++) a[i]=rand( )%10; ?//rand( )函數(shù)每次隨機產(chǎn)生一個0-9的數(shù)
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個隨機數(shù)各自不相等
printf("?? ?請依次輸入4個一位整數(shù):\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("???? (要繼續(xù)嗎?1或0)\n? ?");
scanf(“%d”,z);
if(z==0) break;
}
}
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數(shù)據(jù)類型(含3個成員)
Birds *Bird = (Birds*)malloc(sizeof(Birds)); ?//定義Birds類型 指針變量Bird并賦初值
struct Bg{int x, y; int l_blank; Bg *pri; Bg *next;};? //定義一種Bg數(shù)據(jù)類型(含5個成員)
Bg *Bg1 = (Bg*)malloc(sizeof(Bg));? //定義Bg類型 指針變量Bg1并賦初值
void Position(int x, int y) ?//光標定位函數(shù)(用于指定位置輸出)
{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原創(chuàng)\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("? 按鍵繼續(xù)…");
getch( );
system("cls");
}
void PrFK( ) ?//輸出方框(游戲范圍區(qū))
{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("小鳥即將出現(xiàn),請準備按鍵起飛… ");
getch( );
Position(4, 25); printf("????????????????????????????????? ");
}
void CreatBg( )? //創(chuàng)建障礙物坐標(便于打印輸出)
{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)); ?//啟動隨機數(shù)發(fā)生器
temp = rand( ); ?//產(chǎn)生一個隨機數(shù)并賦值給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)? //核查開頭的障礙物坐標是否在游戲區(qū)內(nèi)
{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)? //打印輸出障礙物(依據(jù)其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毫秒(數(shù)值大小決定游戲速度快慢)
i = 0;
}
Position(6, 25);
printf("游戲結束!? 請輸入:0.退出? 1.重玩");
scanf("%d",t);
if (t==0)break;
system("cls"); Score = 0;
}
return 0;
}
關于c++游戲編程代碼大全和c++游戲代碼簡單的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
掃描二維碼推送至手機訪問。
版權聲明:本文由飛速云SEO網(wǎng)絡優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。