退役后无聊自制了一个游戏...
本想打个2048,限于能力,就照着半成品改成了这个。
Cmd输出太慢有点晃眼。 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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;
}