Skip to content

jjking619/2048game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#项目概述:
	本项目是一款经典的2048益智游戏,通过滑动屏幕上的数字方块,将相同的数字合并成更大的数字,
  直到达到32或更高的分数,即可游戏胜利。
  亮点:
     玩家可以任意的选择游戏模式,如简单模式只需要生成分数为32的格子即可胜利,中等只需要生成分数为64的格子即可胜利,
     困难只需要生成分数为2048的格子即可胜利

 核心功能介绍:

1.游戏初始化与地图设置:
      1.1 游戏启动时,使用map_init()函数初始化一个4x4的二维数组map作为游戏地图,所有位置的值初始化为0。
      1.2 同时,初始化得分变量sum为0,记录玩家的得分表现。

2.随机数字生成:
       2.1 rand_pos()函数负责在地图上随机选择一个空位置生成数字2或4。
       2.2 只有在地图发生变化(即玩家进行移动并合并数字后)才会触发新数字的生成。

3.游戏菜单与状态显示:
        通过refresh_num()函数实时更新游戏地图显示,而menu_right()函数则用于在屏幕上显示当前的游戏状态,
      包括玩家的姓名、得分、历史最高得分等重要信息。

4.玩家移动控制(难点,slideInfo结构体):
	玩家通过滑动屏幕来控制数字方块的移动。touch_slide()函数读取玩家的滑动输入,并解析为slideInfo结构体中的dx、dy和dir等参数,表示滑动方向和距离。
     随后,根据dir的值调用相应的移动函数来处理四个方向的移动逻辑。

5.移动逻辑实现:
       每个方向的移动函数都遵循特定的逻辑来处理合并和移动操作。首先,检查并合并相邻的相同数字;
   然后,将非零元素向目标方向移动,填补由此产生的空格。

6.游戏结束判断:
      over()函数负责检查游戏是否结束。游戏结束的条件是地图上没有空位且没有相邻的相同数字可以合并。若游戏结束,则输出玩家的最终得分,并提示游戏结束。

7.细节与优化:
      7.1随机数生成:使用rand()函数生成随机位置和数字时,注意处理随机数种子的初始化,以避免每次运行游戏时结果相同的问题。
      7.2移动实现:优化移动函数的实现,确保合并和移动操作高效且准确,提升游戏体验。
      7.3游戏结束检测:通过遍历整个地图来检查游戏结束条件,确保检测的准确性和实时性。


总结:
	本2048项目通过精心设计的游戏逻辑和直观的用户界面,为玩家提供了一个既富有挑战性又充满乐趣的游戏体验。
     通过不断优化和完善,该项目已具备较高的可玩性和稳定性,适合各年龄段的玩家休闲娱乐。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published