本文共 3130 字,大约阅读时间需要 10 分钟。
本文实例为大家分享了C语言实现2048游戏的具体代码,供大家参考,具体内容如下
#include
#include
#include /*使用getch()函数*/
#include
#include /*使用Sleep()函数*/
void Menu();//菜单
void Rule_of_game();//游戏规则
void Begin(int max); //开始
void Table();//打印4×4方格
int Random_number1();//产生2或4的随机数
int Random_number2();//产生0、1、2、3的随机数
int Get(int *p_cnt, int score);//输入指令
void Move();//保留上一次的棋盘布局
int If_move();//判断是否移动
int Over();//判断是否结束
void Establish_game();//创建用于保存最高分的文件
void Write_max(int score);//向2048游戏-最高记录写入最高分
int Read_max();//读出最高分记录的文件
void Establish_file();//创建存档文件
void Write_file(int *p_cnt, int scort);//存档
int Read_file(int *p_cnt);//读档
void again();//是否继续游戏
int color(int c);//更改颜色
void box_color(int x);//不同数值对应不同颜色
int a[4][4] = {0};// 定义全局的二维数组
int A[4][4]; //保留上一步的棋局
char *name_max = "2048游戏-最高记录";
char *name_file = "[空白]-2048游戏";
int main() {
system("mode con cols=90 lines=30");
system("title 2048超级大大型游戏"); //程序标题
system("color F0");//F 表示背景颜色,0表示前景颜色
Menu();
system("pause"); //暂停,输入任意键继续
system("cls"); //清屏
again(); //是否继续游戏
return 0;
}
void Menu() //菜单
{
printf("╔══════════════════════════════════════════════╗");
printf("║ 欢迎使用由[空白]制作的2048超级大大型游戏 ║");
printf("╟──────────────────────────────────────────────╢");
printf("║请输入选项: ║");
printf("║ ┌───┐ ║");
printf("║ │ 1 │ 游戏规则 ║");
printf("║ └───┘ ║");
printf("║ ┌───┐ ║");
printf("║ │ 2 │ 开始游戏 ║");
printf("║ └───┘ ║");
printf("║ ┌───┐ ║");
printf("║ │ 3 │ 继续游戏 ║");
printf("║ └───┘ ║");
printf("║║");
printf("║ │ 4 │ 退出游戏 ║");
printf("║ ║");
printf("");
int x = 1, max = 0;
while(x){
switch(getch()){
case '1':
x = 0;
Rule_of_game();//游戏规则
Menu();
break;
case '2':
x = 0;
system("cls");//清屏
Establish_game(name_file);//创建新的读档文件
Establish_game(name_max);//创建新的保存最高记录的文件
Begin(max); //开始游戏
break;
case '3':
x = 0;
system("cls");//清屏
max = Read_max();//读取之前的最高记录
Begin(max); //开始游戏
break;
case '4':
exit(0);
default:
printf("输入了非法选项,请重新选择!");
}
}
}
void Rule_of_game()
{
system("cls");//清屏
printf("╔══════════════════════════════════════════════════════════════════════════════════╗");
printf("║本游戏通过按键W、S、A、D(不区分大小写)四个键分别控制滑块上移、下移、左移和右移。║");
printf("║滑块移动的过程中,如有相邻且相等数字的滑块将会相加,并获得相应的分数。 ║");
printf("║当棋盘上的所有位置均有数字,且不能合成,则游戏结束。本游戏未设置游戏成功。 ║");
printf("║游戏过程中输入I即为存档并退出游戏,输入O即为读档,输入P则退出游戏。 ║");
printf("║“开始游戏”则清除最高记录及存档、“继续游戏”则保存之前的最高记录,且可以读档。 ║");
printf("╚══════════════════════════════════════════════════════════════════════════════════╝");
system("pause");//暂停
system("cls");//清屏
}
void Begin(int max)
{
int score = 0;
int sign = 1;
int h, l, cnt = 0;
int *p_cnt = &cnt;
while(1) {
printf("╔══════════════════════════════════════════════╗");
printf("║ 欢迎使用由[空白]制作的2048超级大大型游戏 ║");
printf("╟──────────────────────────────────────────────╢");
printf("║移动: ┌───┐ 存档: 读档: 退出: ║");
printf("║ │ W │ ║");
printf("║ ┌───┼───┼───┐ ┌───┐ ┌───┐ ┌───┐ ║");
printf("║ │ A │ S │ D │ │ I │ │ O │ │ P │ ║");
printf("║ └───┴───┴───┘ └───┘ └───┘ └───┘ ║");
printf("╚══════════════════════════════════════════════╝");
while(1){
if(sign == 1){
h = Random_number2();
l = Random_number2();
if(a[h][l] == 0){
a[h][l] = Random_number1();
cnt ++;
break;
}
}
else{
break;
}
}
Table();//打印棋盘
printf("移动的步数:%d当前得分:%d最高记录:%d
转载地址:https://blog.csdn.net/weixin_39934257/article/details/110617277 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!