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;
}
效果图: