2048小游戏
C语言小菜鸟,写的一个2048小游戏,不足之处多多包涵
代码实现
头文件
void read();//读档
void save();//存档
void readcheat();//作弊读档
void savecheat();//作弊
void draw();//画棋盘
void init();//棋盘初始化
void clean();//清理棋盘
void MOVE();//去除数字之间的空格
void up();//上移
void down();//下移
void left();//左移
void right();//右移
void playgame();//游戏过程
void addrandom(int num);//向棋盘加入随机数
void gameover();//结束函数
int judge();//判断是否结束
void iswin();//胜利函数
主程序
#include <stdio.h>//Game 2048
#include <time.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#define SIZE 4
#define ENDSCORE 16
#define MAX_TIMES 10000
static int board[SIZE][SIZE];
static int score1=0;//统计总分
static int score2=0;//统计本次移动出现的最大值
static int cal=0;//统计2048出现次数,仅第一次显示胜利
static int num=0;
static int *q = &score1;
static int times=0;
struct back {
int pre_score;
int pre_chess[SIZE][SIZE];
};
struct back pre_board[MAX_TIMES];
int main() {
init();
addrandom(4);
addrandom(4);
printf("Please select\n");
printf("if you want 2:4=n:1,enter n\n");
scanf("%d",&num);
srand((unsigned)(time(NULL)));
draw();
playgame();
return 0;
}
//读取以反悔
void readcheat() {
times--;
int i,j;
for(i=0; i<SIZE; i++)
for(j=0; j<SIZE; j++) {
board[i][j]=pre_board[times-1].pre_chess[i][j];
score1=pre_board[times-1].pre_score;
}
}
//存下每一步的棋盘
void savecheat() {
int i,j;
for(i=0; i<SIZE; i++)
for(j=0; j<SIZE; j++) {
pre_board[times].pre_chess[i][j]=board[i][j];
pre_board[times].pre_score=score1;
}
times++;
}
//读取存档
void read() {
FILE *fp = fopen("date.txt","r");
fread(board,sizeof(board[0][0]),sizeof(board)/sizeof(board[0][0]),fp);
fread(q,sizeof(scor