学生课程设计报告
课程设计题目: 数独字谜游戏
专 业 名 称: 软件工程
2013 年 6 月 21 日
一、课程设计内容
数独字谜游戏:数独字谜游戏是在一个9x9的正方形内,给出一定的数字,让玩家在剩余的空格之内填写数字,最终使每一行,每一列,每一个3x3的小正方形都只有1-9,并且不重复,这样玩家就算通关的一款游戏。
二、 技术路线
是基于vc++6.0环境下所开发的程序,
加入了PlaySound()函数,设置了游戏的背景音乐。
加入了
三、 设计与实现
1.游戏基本功能:
游戏有难度选择,通关后继续游戏和退出游戏的界面。
游戏在选择难度后,会在布满数字的9x9的正方形宫格内随机生成一些空白字符,根据选择难度的不同,生成的空白字符数目会不同,空白字符越多,难度越大。
通过正方形宫格外的坐标,用键盘输入想输入数字的坐标和数字,随后会显示出输入数字后新宫格,再重复以上操作,直到每一行,每一列,每一个3x3的宫格内只有1-9这9个数字并且不重复,游戏就算通关。
游戏通关后,可以选择继续游戏,并且挑战更大难度,也可以选择退出游戏,下次再战。
2.函数定义和声明
(1) 头文件
#include
#include
#pragma comment(lib, \#pragma comment(lib,%using namespace std;
(2)函数声明
bool yz(char b[9][10]) //验证子函数,验证每一行,每一列,每一个3x3宫格都是1-9.
3.主函数int main() void main() {
PlaySound((char*)\ char a[9][10]={{\ {\ {\ {\ {\ {\ {\ {\ {\
int b[81],c[81],q=0,p=0; int k,x; do{
setTextColor(14);
cout<<\欢迎进入数独游戏>>>>>*^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<<\\
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<
if(q==30&&p==30) //将剩下的题目字符用另一种颜色输出表示
{
setTextColor(12); cout<
setTextColor(3); cout<<\ } else {
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); cout<
setTextColor(3); cout<<\ } }
setTextColor(3); cout<<\‖\}
setTextColor(3);
cout<<\ ‖==================================‖\cout<<\ ‖==================================‖\for(i=3;i<6;i++) {
setTextColor(15);
cout<<\\ 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<
if(q==30&&p==30) {
setTextColor(12); cout<
setTextColor(3); cout<<\