一个无聊的游戏——吃豆人

退役后无聊自制了一个游戏...
本想打个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;
}