c语言数独字谜游戏课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生课程设计报告
课程设计题目:数独字谜游戏
专业名称:软件工程
2013 年6 月21 日
一、课程设计内容
数独字谜游戏:数独字谜游戏是在一个9x9的正方形内,给出一定的数字,让玩家在剩余的空格之内填写数字,最终使每一行,每一列,每一个3x3的小正方形都只有1-9,并且不重复,这样玩家就算通关的一款游戏。
二、技术路线
是基于vc++6.0环境下所开发的程序,
加入了PlaySound()函数,设置了游戏的背景音乐。
加入了
接收用户键盘输入信息,实现进入游戏,输入坐标,输入数字等功能。
运用的类型转换,将char型数组转换为int型数组。
三、设计与实现
1.游戏基本功能:
游戏有难度选择,通关后继续游戏和退出游戏的界面。
游戏在选择难度后,会在布满数字的9x9的正方形宫格内随机生成一些空白字符,根据选择难度的不同,生成的空白字符数目会不同,空白字符越多,难度越大。
通过正方形宫格外的坐标,用键盘输入想输入数字的坐标和数字,随后会显示出输入数字后新宫格,再重复以上操作,直到每一行,每一列,每一个3x3的宫格内只有1-9这9个数字并且不重复,游戏就算通关。
游戏通关后,可以选择继续游戏,并且挑战更大难度,也可以选择退出游戏,下次再战。
2.函数定义和声明
(1)头文件
#include
#include
#include
#include "pcc32.h" //彩色文本
#include
#pragma comment(lib, "pcc32_vc6.lib")
#pragma comment(lib,"winmm.lib")
using namespace std;
(2)函数声明
bool yz(char b[9][10]) //验证子函数,验证每一行,每一列,每一个3x3宫格都是1-9.
3.主函数int main()
void main()
{
PlaySound((char*)"kanong.wav",NULL,SND_ASYNC|SND_LOOP);
char a[9][10]={{"493761528"},
{"582943167"},
{"716528349"},
{"139674852"},
{"658219734"},
{"247835691"},
{"975382416"},
{"821456973"},
{"364197285"}};
int b[81],c[81],q=0,p=0;
int k,x;
do{
setTextColor(14);
cout<<" *^0^*<<<<<欢迎进入数独游戏>>>>>*^0^*\n";
setTextColor(10);
cout<<"请选择游戏的难易级别为?(3—高,2—中,1—低):"< cin>>k; switch(k) { int i,j,m,n,gs; case 1: srand((int)time(0)); for(gs=0;gs<30;gs++)//随机在已经布满的9x9宫格里,运用随机数,并且以系统时间为参数,随机产生空白字符, { //低难度的数独,每次产生的空白字符为22个左右, m=(int)(10*rand()/(RAND_MAX+1.0)); n=(int)(10*rand()/(RAND_MAX+1.0)); a[m][n]=' '; b[q]=m; //将随机产生的空白字符的坐标分别存在b,c两个数组中. c[p]=n; q++; p++; } b[30]=10,c[30]=10; do { setTextColor(15); cout<<" 1 2 3 4 5 6 7 8 9"< setTextColor(3); cout<<" __________________"< cout<<" ‖----------------------------------‖"< for(i=0;i<3;i++) { setTextColor(15); cout<<" "<<(i+1)<<" "; for(j=0;j<9;j++) //输出不同颜色的题目字符和空白字符. { if(j%3!=0) { setTextColor(3); cout<<"| "; for(q=0,p=0;q<31,p<31;q++,p++) //将随机的空白字符单独表示出来,并且以另一种颜色输出表示. { if(i==b[q]&&j==c[p]) { setTextColor(14); cout< break; } if(q==30&&p==30) //将剩下的题目字符用另一种颜色输出表示 { setTextColor(12);