基于C++实现的九宫格游戏

目录
1 问题描述 2
2 需求分析 2
2.1 数据需求 2
2.2 功能需求 2
2.3 非功能需求 3
3 概要设计 3
3.1抽象数据类型 3
3.2 总体设计 3
3.3 功能模块设计 5
3.4 用户界面设计 7
4 详细设计及系统实现 9
4.1 存储结构 9
4.2 核心算法 9
4.3 各功能实现 10
5 系统调试分析 14
6 课程设计总结 14
参考文献 15
附录:源码以及其它相关材料 15

2 需求分析
2.1 数据需求
游戏包括界面,基本的控件,有文本框、选择框、按钮等。
用户信息:用户登录需要的账号和密码,新用户注册用到的信息;对玩家信息的记录、保存、读取。
界面信息:图片,九宫格规格;
交互信息:控制游戏的移动;
2.2 功能需求

  1. 游戏界面设计:
    用户登录,进入游戏界面,有良好的功能可视化界面,有游戏规则介绍。例如有计时和分数的显示,游戏图片替换和打乱图片的按键,显示游戏界面的图像画面,游戏玩家开始游戏、悔一步,重新开始的按键。
  2. 原始图像的选择:
    游戏开始时,从准备好的图片中,选择想要拼的图片,要有不同难度的图片(可从相似度考虑);可选择重新开始;
  3. 随机打乱图像:
    选择难度(1,2,3),根据难度将图片分成33, 55,6*6的规格,设计算法,随机打乱生成肯定有成功结果的初始化状态九宫格,要求有动态的打乱图片的显示过程(若产生的初始化九宫格无法到达最终状态,应该有提示3秒后自动刷新,重新生成);
  4. 计时器的设计:
    动态显示玩家本局的时间,可选择限时挑战;
  5. 移动:
    用户可以拖动模块进行交换,直到拼出原图像。
    1)通过w, s, a, d(或者上,下,左,右)进行平移操作,动态的展示每一步移动的结果。如果操作违法,应不做该操作;
    2)能够刷新界面;
    3)游戏过程中,允许选择悔一步(不可后退多步,若用户悔步>1,给出提示且不执行多次后退操作)或者终止游戏(正常),继续下一步;
  6. 系统能自动检查到用户拼合出原图。
  7. 结束游戏:
	int result = CanMovePos(Pos);
	for(int i=0; i<4; ++i)//
	{
		bool bIsMove=false;//初始设定为不能移动
		int r = result%10*10;//依次求出四位数的第4,3,2,1位(从左往右数)
		r = (int)pow((float)r, i);//对应下,上,左,右是否有格子
		switch(r)
		{
		case 1000://表示左侧有格子
			if(m_Block[Pos-1] == LASTBLOCK)//LASTBLOCK两位数表示的空白格子[Pos-1]是左侧格子的下角标,m_Block为求两位数的函数
			{
				MovePos(Pos-1, Pos);
				bIsMove = true;
			}
			break;
		case 100://表示右侧还有格子
			if(m_Block[Pos+1] == LASTBLOCK)
			{
				MovePos(Pos+1, Pos);
				bIsMove = true;
			}
			break;
		case 10://表示上面有格子
			if(m_Block[Pos-m_BlockNum] == LASTBLOCK)
			{
				MovePos(Pos-m_BlockNum, Pos);
				bIsMove = true;
			}
			break;
		case 1://表示下面有格子
			if(m_Block[Pos+m_BlockNum] == LASTBLOCK)
			{
				MovePos(Pos+m_BlockNum, Pos);
				bIsMove = true;
			}
			break;
		}
		result /= 10;//下一位
		if(bIsMove)
		{
			AddStep();//移动成功增加步数
			return true;
		}
	}//四种情况必出现一种,其他情况为异常情况
	return false;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值