1.游戏规则大致和像素鸟一样,但是改成了鼠标控制上下移动
2.写代码用时:约3h
代码:
#include<stdio.h> #include<windows.h> #include<stdlib.h> #include<time.h> #define K 10 //宽 #define C 20 //长 #define I 7 //角色位置 #define D 7 //障碍间隔 #define L ((K-2)*7/8) //障碍最长值 int main() { relife: //重玩 char a[K][C],game; DWORD S,E; //系统运行时间 S=GetTickCount(); float v=1; int wo,random,d=D,start=0,score=1,speed; POINT q={0,0}; //和坐标有关的东西 LPPOINT s=&q; //和坐标有关的东西 for(int i=0;i<K;i++) for(int j=0;j<C;j++) a[i][j]=' '; //初始化地图 for(int i=0;i<C;i++) a[0][i]=a[K-1][i]='-'; //初始化边界 srand((unsigned)time(0)); while(1) { GetCursorPos(s); //获取鼠标位置 wo=((float)(s->y-30))/36; //计算角色位置 if(wo>K-2) wo=K-2; //鼠标越下界情况处理 if(wo<1) wo=1; //鼠标越上界情况处理 if(a[wo][I]=='*') break; else { goon: //复活 a[wo][I]='O'; } system("cls"); for(int i=0;i<K;i++) { for(int j=0;j<C;j++) { if(a[i][j]=='O') printf(""); //角色 else if(a[i][j]=='-'||a[i][j]=='*') printf("█"); //边界和障碍 else printf(" "); } printf("\n"); } start++; if(start==7) { printf("1.鼠标上下控制移动\n"); printf("2.一定要窗口最大化之后才能玩!窗口最大化!\n"); printf("3.按任意键开始游戏\n\n\n\n"); score=0; system("pause"); } a[wo][I]=' '; for(int i=0;i<C-1;i++) for(int j=1;j<K-1;j++) a[j][i]=a[j][i+1]; //障碍移动 if(d==D) { random=rand()%(2*L)-L; //生成随机障碍 if(random>K-2||random<(2-K)||(random<3&&random>-3)) random=3; if(random>0) for(int i=1;random>0;random--,i++) a[i][C-1]='*'; else for(int i=K-2;random<0;random++,i--) a[i][C-1]='*'; d=0; score++; speed=1000/score; } else for(int i=1;i<=K-2;i++) a[i][C-1]=' '; printf("得分:%d",score); E=GetTickCount(); if(v<1000/((float)(E-S))&&start>=7) v=1000/((float)(E-S)); printf(" 速度:%.3lf格/秒",v); S=GetTickCount(); if(start>=7) Sleep(speed); d++; } printf("\n游戏结束\n\n\n按Enter重玩"); scanf("%c",&game); if(game=='\n') goto relife; if(game==' ') goto goon; }
效果图: