一个无聊的游戏——吃豆人
退役后无聊自制了一个游戏...
本想打个2048,限于能力,就照着半成品改成了这个。
Cmd输出太慢有点晃眼。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
#include<cstdlib>
#include<conio.h>
#include<Windows.h>
using namespace std;
const int MAXC=100,MAXR=100;
class Game{
int mat[MAXC][MAXR],dx[4],dy[4];
bool f;
int x,y,score,col,row,tar;
private:
void cls(){
system("cls");
}
int dir(){
char c1,c2;
c1=getch(),c2=getch();
switch(c2){
case 72:return 0;//up
case 75:return 1;//left
case 77:return 2;//right
case 80:return 3;//down
}
}
void topblock(){
printf("┌");
for(int i=0;i<col-1;++i)
printf("─┬");
puts("─┐");
}
void buttonblock(){
printf("└");
for(int i=0;i<col-1;++i)
printf("─┴");
puts("─┘");
}
void commonblock(){
printf("├");
for(int i=0;i<col-1;++i)
printf("─┼");
puts("─┤");
}
public:
Game(){
memset(mat,0,sizeof mat);
dx[0]=dy[1]=-1,dx[3]=dy[2]=1;
dx[1]=dx[2]=dy[0]=dy[3]=0;
mat[0][0]=1;
x=0,y=0;
tar='*';
score=0;//initation
row=11,col=19;//settings
}
void start(){
print();
while(1){
int t=dir(),nx=x+dx[t],ny=y+dy[t];
if(nx>=0&&ny>=0&&nx<row&&ny<col){
if(mat[nx][ny]==tar)
f=0;
mat[nx][ny]=mat[x][y];
mat[x][y]=0;
x=nx,y=ny;
print();
if(!f){
nx=rand()%row,ny=rand()%col;
if(!mat[nx][ny])
mat[nx][ny]=tar,f=1;
}
}
}
}
void print(){
cls();
topblock();
for(int i=0;i<row;++i){
printf("│");
for(int j=0;j<col;++j){
switch(mat[i][j]){
case 0:printf(" │");break;
default:printf("%2c│",mat[i][j]);
}
}
puts("");
if(i==row-1)
buttonblock();
else commonblock();
}
}
};
int main(){
srand((unsigned)time(0));
Game().start();
return 0;
}