21点纸牌游戏_C++课程设计报告

21点纸牌游戏_C++课程设计报告
21点纸牌游戏_C++课程设计报告

郑州轻工业学院

课程设计报告

课程设计名称: 21点纸牌游戏

课程名称:面向对象程序设计(C++)

姓名:谢先斌

院(系):计算机与通信工程学院

专业班级:计算机10-1

学号:541007010144

指导教师:王秉政、郭锋

成绩:

时间:2011年12月26日至2011年12月30日

郑州轻工业学院

学生课程设计任务书

一、题目(任选一题)

21点纸牌游戏

公司员工管理系统

二、学生信息

专业计算机科学与技术学号 541007010144 姓名谢先斌三、基本要求及约束条件

(一)“21点纸牌游戏”设计

1、需求及内容

21点是一个古老的扑克牌游戏,游戏规则是:各个参与者设法使自己的牌达到总分21而不超过这个数值。扑克牌的分值取它们的面值,A充当1分或者11分(由玩家自己选择一种分值),J、Q和K人头牌都是10分。庄家对付1~7个玩家。在一局开始时,包括庄家在内的所有参与者都有两张牌。玩家可以看到它们的所有牌以及总分,而专家有一张牌暂时是隐藏的。接下来,只要愿意,各个玩家都有机会依次再拿一张牌。如果某个玩家的总分超过了21(称为“引爆”),那么这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只有庄家的总分等于或小于16,那么他就必须再拿牌。如果庄家引爆了,那么还没有引爆的所有玩家都将获胜,引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家与庄家打成平局。

编写程序实现游戏,计算机作为庄家,1~7个人作为普通玩家参与游戏。游戏程序运行输出如下所示:

2、要点及分析

首先定义表示扑克牌花色与面值的枚举类型,这样程序可读性更强,具体定义如下:

typedef enum

{ // 扑克牌面值:ACE(A),TWO(2)~TEN(10),JACK(J), QUEEN(Q), KING(K)

ACE = 1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING

} RankType;

typedef enum

{ // 扑克牌花色:CLUBS(梅花), DIAMONDS(方块), HEARTS(红桃)和SPADES(黑桃) CLUBS, DIAMONDS, HEARTS, SPADES

} SuitType;

struct Card

{ // 扑克牌结构体

RankType rank; // 扑克牌面值

SuitType suit; // 扑克牌花色

};

(二)“公司员工管理系统”设计

1、需求及内容

为了方便对公司员工基本信息进行电子化管理,利用面向对象的程序设计技术实现对员工信息的自动化管理。

系统应能满足如下的需求:

增加员工数据信息

更新员工数据信息

查询员工数据信息

删除员工数据信息

良好的人际交互界面、方便操作

2、要求及要点分析

设计一个虚基类Staff(员工),包括编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出工程师类Engineer包含专业和职称保护数据成员以及相关的成员函数,再由Staff派生出领导类Leader,包括职务和部门保护数据成员以及相关的成员函数;然后由Engineer和Leader类派生出主任工程师类Chairman。

设计一个利用文件处理方式实现对公司人员(包括工程师、领导和主任工程师)进行管理,具有增加数据、更新数据、查询数据、删除数据的功能。

编写程序实现游戏,按照要求实现程序。游戏程序运行输出如下所示:

四、难度分析及目标

该课题涉及到面向对象程序设计技术,难度适中,工作量适中。

该次课程设计的总体目标是培养学生对系统开发总体流程的了解,经过本次课程设计,学生应能对系统开发的步骤和面向对象程序设计的思路有较好的理解

和掌握。

五、设计要求、技术参数及设计规格

1、设计的系统能够运行,提交压缩程序;

2、提交课程设计报告,按“课程设计报告要求”撰写

3、程序设计环境为Visual C++ 6.0和WindosXP或Windows2000。

4、所有的设计工作需要同学自己真实地、独立地完成。

六、工作量

七、考核形式、考核时间、考核指标及成绩评定

课程设计成绩由下面构成:课程设计纪律、课程设计态度和平时表现占20%;课程设计结果占50%;课程设计报告占30%。

考核形式:1)老师每日对学生的考察、评估和考核;2)最后对课程设计项目完成的质量进行考核和验收。

完成期限: 2011年12月30日

指导教师签章:王秉政、郭锋

专业负责人签章:

教学院长签章:

年月日

一、需求说明

21点纸牌游戏是一个很具有使用价值的扑克牌小游戏。首先,要从21点游戏的古老的起源说起,21点小游戏的起源与民间,其主要是用于打发人们休闲使用,茶钱饭后经常看到人们在玩。再次,21点游戏也是能满足人们赌性心理的一款首选游戏,且所需条件简单只需一副扑克牌而已,易于被人们接受。综上,编写21点游戏的前途是十分光明的,其应用空间又是十分宽广的。

当今计算机已经在全国大部分地区得到了广泛的普及,为满足人们对21点纸牌游戏的软件使用需求,21点游戏的软件开发又是一件十分急迫又有前景的开发。随着社会的发展科技的进步,计算机的应用在社会各领域中都得到了普及。越来越多的人都感受到利用计算机来玩各种游戏的快捷,且更能满足人们消耗业余时间的心理。

21点游戏是一款典型的纸牌游戏,其使用面积极广,应用人说极多,界面要求低,是一款不错的上机编写程序实例。

它要方便的实现玩家通过界面来控制游戏的是否要牌,是否开始新游戏等一系列操作。总体任务是实现了21点游戏的的系统化﹑规范化和自动化。

二、功能描述

21点纸牌游戏最多允许7位玩家,在开始时每一位玩家都先发两张牌,只有庄家的第一张牌隐藏,其余的牌都是明着的,接下来,只要愿意,各个玩家都有机会依次再拿一张牌。如果某个玩家的总分超过了21(称为“引爆”),那么这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只有庄家的总分等于或小于16,那么他就必须再拿牌。如果庄家引爆了,那么还没有引爆的所有玩家都将获胜,引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家与庄家打成平局。

三、系统设计及实现

软件规格要求合理,基于C++程序设计,通过类与对象的编写,最终在有限空间达到效果最优化。

2.1设计要求

用C++实现“21点游戏系统”。

2.2系统功能:

(1)系统启动后,出现欢迎界面,满足人机交互的命令行设计。

(2)能实现基本信息的输入与游戏开始分开。

开始时输入参加游戏的人数(1~7人),单击回车后进入按要求依次输入玩家的姓名。

(3)能实现开始后显示每一个玩家的牌点大小,当然庄家的首张牌是隐藏的。

(4)能实现决定是否要继续发牌。。

通过(y, n)?问题选项的提问与回答,来完成是否继续发牌的游戏要求(5)能实现自主完成庄家的发牌与显示最终大小工作。

通过所有玩家都已决定是否要发牌后,最终可以完成对庄家的是否发牌和显示最终牌点大小。

(6)能实现系统自动比较大小,并通过界面最终显示到屏幕上。

(7)能实现在一次游戏结束后询问是否要进行下一次的游戏。

(8)能实现在游戏结束后提示游戏结束界面。

2.3系统性能:

(1)时间特性需求

在网络连接正常的情况下,查询响应时间为秒级。

(2)灵活性

可以自主控制玩家的个数,及让玩家有足够的自主选择全来决定是否要牌和进行下一盘游戏。

(3)可用性

软件应该尽可能的一目了然,使一般用户能够使用。

(4)安全性

本游戏不会出现安全问题,所有程序代码不会被360,金山,qq关键等判为危险程序。

(5)可维护性

(6)应用程序的维护

当用户使用本套职工信息系统软件时,遇到了软件本身的逻辑错误时,应当有软件的维护人员对软件进行修改。

(7)可转移、可转换性

Visual Studio及C编程语言的兼容性很高,在windows95/98. Windows NT. windows2000. windows XP等操作系统都可以直接运行。

输入项:

用户通过软件输入必要的信息,然后保存到数据到内存,所输入的信息是经过需求分析限定的内容。

输出项:

本游戏信息系统软件会将所有需要浏览的数据显示在屏幕上,以便使玩家能够清晰的看到自己的操作。

算法:

1)将用户输入的数据,将数据存放到数组中。

2)将数组中的数据,提取到用户界面中。

3)按条件依次填入数组中的数据。

4)按条件选择执行。

注释设计:

尽可能的将软件中插入注释语句,使语句功能明了。制作的时候应该制作两分,一份是标有注释语句的代码,用来给维护人员、测试人员和开发人员了解开发过程所用,另一份是不带有注释语句的代码,用来最后实际应用当中,这样可

以充分的利用有限的时间,降低客户的计算机打开系统功能的时间,提高客户的使用速度。

限制条件:

限制必要的条件,以排除由于用户的误操作造成不必要的错误。

测试计划:

在软件编辑的工作进行当中,测试人员便要开始制定测试计划,主要通过大量的重复测试来达到测试软件的目的。

3.1设计思路和管理框架

(1)思路:

通过类,数组的应用搭建子函数,通过main 函数调用各个分模块实现系统的主要功能。

(2)管理框架流程图:

功能实现模块图

(1)录入信息,玩家人数及姓名。

(2)录入后,系统自动发牌,并显示庄家(第一张牌隐藏)及各个玩家的牌点大小及总点数。

(3)依次询问玩家是否要牌,并y决定要牌,你n决定不要牌。如果哪一位玩家总点数超过21点,玩家引爆。

(4)所有玩家输入完后,则会显示输赢信息,表示一盘游戏结束。

(5)输入y表示继续下一盘游戏,n则停止游戏。

3.2各功能模块

1.交互式菜单

开始系统自动进入用户操作界面。

2. 输入玩家人数

输入有多少人参加游戏,然后依次输入玩家姓名,之后熊、通会自动开始游戏并显示每一位玩家的信息。

3.玩家决定是否要牌

按照提示信息,填写y/n ,决定是否要牌,完成后系统自动显示输赢,并询问是否下一盘游戏。

4.继续下一盘游戏

输入y后,系统进入下一盘游戏,询问参加游戏人数,其他信息同2-3步骤。

5.继续游戏

根据提示继续下一盘游戏游戏。

6.退出游戏

输入n,将退出游戏。

四、课程设计心得

通过这次课程设计,我真正的明白了什么是计算机的软件的开发及软件开发的整个过程,并更加深刻的体会到作为当代大学生的我们就应该体会到学以致用的重要价值。课程设计期间,虽说时间极短,但其中能学到的知识不仅仅能满足我对软件开发的好奇,更重要的是让我第一次看到了从入大学到现在一年半来对所学知识的应用与收获,可谓是受益匪浅。这几天的学习所学到的知识正是这一年对C++学习一个全面覆盖与整体回顾,也加深了我对C++知识的理解,积累了软件开发的宝贵经验,相信在以后的学习中我定能够汲取今天的经验铺垫明天的殿堂。

从入学第一学期接触到C语言,到C#在到今天的C++,每一次的学习都各有侧重点。C++给我最大的感触就是他对面向对象的设计,通过我对封装、多态、继承的一步一步深入地了解,使我对所学的计算机编程有了一个更加深入的认识。这次的实习更是给了我一次上机检验的机会,通过编写一次21点游戏的机会窥视整个编程世界的灵魂。在这次课程设计之前我对软件项目没有一点眉目,只是在河科大的同学那里接触到一些他们的软件作品。终于在这次的上机实习中扣开了我编些实用软件的大门,激发了我的软件开发的乐趣。

21点游戏是一个古老的纸牌游戏,其开发过程的整体规划是一件很重要的工作。以前总以为只要掌握了对C++的基本知识就可以满足未来对就业的需求,但这次我错了。经历了这次课程设计,让我明白一个完整的项目所要的基本步骤并不是想象中的那么简单。从软件的需求到系统的布局等一项项功能的具体实现,在通过对所学类的一次次的应用及理解的不断加深,每一步都要经过自己的不懈

努力并感受着收获的快乐。

在最后的界面的整体设计上,我更是体会到与老师同学交流的重要性。更进一步的了解到以后要维持一个团队团结的重要性。虽说这次界面设计是现学现用,但在其中更是给自己不少启发,使我明白在以后的工作中所遇到的每一件事物并不是自己所熟悉的,因此我们就应该加强对新知识的接受理解应用的能力。自己的能力总是有限的,在今后的生活中我要加强与同学老师的交流,懂得分享的重要性,并从中进一步加强对团结的理解。

最后,我应该感谢老师同学的指导与帮助及学院提供的这次难得的实习机会。

五、附录(代码)

//GameOf21Point.h

#include

#define LEN_OF_MAX_NAME 21

typedef enum

{

//扑克牌面值:ACE(A),TWO(2)~TEN(10),JACK(J),QUEEN(Q),KING(K)

ACE=1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING

}RankType;

typedef enum

{

//扑克牌的花色:CAUBS(梅花),DIAMONDS(方块),HEARTS(红桃),SPADES(黑桃)

CLUBS, DIAMONDS, HEARTS, SPADES

}SuitType;

struct Card

{

RankType rank;

SuitType suit;

};

class GameOf21Point

{

private:

Card d[52];

int dealPos;

Card hands[8][21];

int numOfCard[8];

char name[8][LEN_OF_MAX_NAME];

int numOfPlayer;

void Shuffle();

int GetTotalScore(Card hand[21], int n);

void ShowStatus(int num,bool hideFirstCardAndTotalScore=false);

Card DealOneCard()

{

return d[dealPos++];

}

public:

GameOf21Point();

virtual~GameOf21Point()

{

};

void Game();

};

//GameOf21Point.cpp

#include

#include

#include

#include

#include "GameOf21Point.h"

ostream &operator<<(ostream &o,const Card &c)

{

if(c.suit==CLUBS)

o<<"梅花";

else if(c.suit==DIAMONDS)

o<<"方块";

else if(c.suit==HEARTS)

o<<"红桃";

else if(c.suit==SPADES)

o<<"KING";

if(c.rank==ACE)

o<<"A";

else if(c.rank==JACK)

o<<"J";

else if(c.rank==QUEEN)

o<<"Q";

else if(c.rank==KING)

o<<"K";

else cout<<(int)c.rank;

return o;

}

void GameOf21Point::Shuffle()

{

srand(time(NULL));

for(int i=51;i>0;i--)

{

int pos=rand()%(i+1);

Card t;

t=d[pos];

d[pos]=d[i];

d[i]=t;

}

}

int GameOf21Point::GetTotalScore(Card hand[21], int n)

{

int p;

int totalScore=0;

for(p=0;p

{

if(hand[p].rank==ACE)

totalScore+=1;

else if(hand[p].rank==TEN || hand[p].rank==JACK || hand[p].rank==QUEEN ||hand[p].rank==KING)

totalScore+=10;

else

totalScore+=(int)hand[p].rank;

}

for(p=0;p21;p++)

if(hand[p].rank==ACE)

totalScore-=10;

return totalScore;

}

void GameOf21Point::ShowStatus(int n,bool hideFirstCardAndTotalScore) {

cout<<"\t\t"<

if(hideFirstCardAndTotalScore)

cout<<" <隐藏>";

else

{

if(hands[n][0].suit==CLUBS)

cout<<" 梅花";

else if(hands[n][0].suit==DIAMONDS)

cout<<" 方块";

else if(hands[n][0].suit==HEARTS)

cout<<" 红桃";

else if(hands[n][0].suit==SPADES)

cout<<" 黑桃";

if(hands[n][0].rank==ACE)

cout<<"A";

else if(hands[n][0].rank==JACK)

cout<<"J";

else if(hands[n][0].rank==QUEEN)

cout<<"Q";

else if(hands[n][0].rank==KING)

cout<<"K";

else

cout<<(int)hands[n][0].rank;

}

for(int i=1;i

{

if(hands[n][i].suit==CLUBS)

cout<<" 梅花";

else if(hands[n][i].suit==DIAMONDS)

cout<<" 方块";

else if(hands[n][i].suit==HEARTS)

cout<<" 红桃";

else if(hands[n][i].suit==SPADES)

cout<<" 黑桃";

if(hands[n][i].rank==ACE)

cout<<"A";

else if(hands[n][i].rank==JACK)

cout<<"J";

else if(hands[n][i].rank==QUEEN)

cout<<"Q";

else if(hands[n][i].rank==KING)

cout<<"K";

else

cout<<(int)hands[n][i].rank;

}

if(!hideFirstCardAndTotalScore)

cout<<" 总分数"<

cout<

if(GetTotalScore(hands[n],numOfCard[n])>21)

cout<<"\t\t"<

}

GameOf21Point::GameOf21Point()

{

int curPos=0;

dealPos=0;

int i=0;

for(int suitpos=0;suitpos<4;suitpos++)

{

for(int rankPos=1;rankPos<=13;rankPos++)

{

d[curPos].suit=(SuitType)suitpos;

d[curPos].rank=(RankType)rankPos;

curPos++;

}

}

cout<

cout<<"\t\t\t"<<" 21点游戏欢迎您的使用! "<

cout<<"

=====================================================================" <

cout<<"\t\t多少人加入游戏?<1~7>:";

cin>>numOfPlayer;

while(numOfPlayer<1||numOfPlayer>7)

{

cout<<"\t\t玩家人数限定在1~7人,请重新输入人数<1~7>:";

cin>>numOfPlayer;

}

for(i=0;i<=numOfPlayer;i++)

numOfCard[i]=0;

strcpy(name[0],"庄家");

cout<

for(i=1;i<=numOfPlayer;i++)

{

cout<<"\t\t输入第"<

cin>>name[i];

}

cout<

cout<<"\t\t\t\t游戏开始!"<

}

void GameOf21Point::Game()

{

int i,j;

Shuffle();

for(i=1;i<=2;i++)

{

hands[0][numOfCard[0]]=DealOneCard();

numOfCard[0]++;

}

ShowStatus(0,true);

for(i=1;i<=numOfPlayer;i++)

for(j=0;j<2;j++)

{

hands[i][numOfCard[i]]=DealOneCard();

numOfCard[i]++;

}

for(i=1;i<=numOfPlayer;i++)

ShowStatus(i);

cout<

for(i=1;i<=numOfPlayer;i++)

{

char ch;

cout<<"\t\t"<?";

cin>>ch;

while(ch!='y'&&ch!='n')

{

cout<<"\t\t"<?";

cin>>ch;

}

while(GetTotalScore(hands[i],numOfCard[i])<=21&&ch=='y')

{

hands[i][numOfCard[i]]=DealOneCard();

numOfCard[i]++;

ShowStatus(i);

if(GetTotalScore(hands[i],numOfCard[i])>21)

break;

cout<<"\t\t"<?";

cin>>ch;

}

}

ShowStatus(0);

while(GetTotalScore(hands[0],numOfCard[0])<=16)

{

hands[0][numOfCard[0]]=DealOneCard();

numOfCard[0]++;

ShowStatus(0);

}

cout<

if(GetTotalScore(hands[0],numOfCard[0])>21)

{

for(i=1;i<=numOfPlayer;i++)

{

if(GetTotalScore(hands[i],numOfCard[i])<=21)

cout<<"\t\t"<

else

cout<<"\t\t"<

}

}

else

{

for(i=1;i<=numOfPlayer;i++)

{

if(GetTotalScore(hands[i],numOfCard[i])<=21 && GetTotalScore(hands[i],numOfCard[i])>GetTotalScore(hands[0],numOfCard[0]))

cout<<"\t\t"<

else

if(GetTotalScore(hands[i],numOfCard[i])==GetTotalScore(hands[0],numOfCard[0]))

cout<<"\t\t"<

else

cout<<"\t\t"<

}

}

}

//main.cpp

#include

#include "GameOf21Point.h"

int main()

{

char ch;

ch='y';

while(ch=='y')

{

GameOf21Point game;

game.Game();

cout<?";

软件测试 扫雷游戏

软件测试 实验报告(20 15 -20 16 学年第 2学期) 学号: 学生姓名: 专业班级: 学院: 学生成绩:

1.引言 1.1编写目的 编写该测试报告目的为: (1).查找并总结该模块程序所存在的问题; (2).为更改存在的问题,提供参考。 (3).评估测试测试执行和测试计划是否符合 1.2 程序功能 扫雷游戏中各个功能实现 1.3 测试对象 扫雷软件游戏规则测试 1.4 测试方法 黑盒测试 2.测试计划 2.1、条件: ?方块当前状态:标识问号方块、方块初始状态、方块标识红旗、 标识数字X且周围已标记了X个雷、标识数字X且周围没有标记完X个雷,标识数字X标雷错误 ?鼠标操作:左键、右键、双击 ?方块状态:有雷、无雷 2.2、动作: ?方块白色 ?方块标识问号 ?方块标识数字 ?方块旗子 ?炸弹爆炸,游戏结束

?未标识方块闪速 ?周围所有的非雷显示 2.4、简化公式: 6*3*2 =(1+1+1+1+1+1)*3*2 =1*3*2+1*2*2+1*3*2+1*1*1+1*1*1+1*1*1 =6+4+6+1+1+1 =19

3.测试结果分析 3.1结果分析 在程序代码基本完成后,经过不断的调试和修改,最后测试本次所设计的扫雷游戏能够正常运行,没有出现明显的错误和漏洞,但是在一些细节方面仍然需要完善,总的来说本次设计在功能上已经基本达到要求,在其他细节方面有待以后完善。 3.2 修改建议 1.在游戏中可以假如一些声音的提示,在游戏完成和失败的时候弹出一些小 的Flash动画。 2.完善一下扫雷英雄榜等。 4.测试评估 4.1测试任务评估 本次测试执行准备充足,完成了既定目标。 4.2 测试对象评估 测试对象尚未完善,不符合现阶段测试质量要求,存在着一些缺陷,本测试需要进一步修正,重新进行测试。

C课程设计点纸牌游戏程序

C课程设计点纸牌游戏 程序 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

#i n c l u d e<> #include<> #include<> #include<> #include<> #include<> class Game { public: Game() { win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=100,bet=0; player=0,cpu=0; char answer1[]="123456"; strcpy(answer,answer1); char answer2[]="654321"; strcpy(daan,answer2); }; void rules();...."<10).){ cout<<"你的输入有误!:(请重新输入 "<5) { cout<<"\t\t\t你不能多于5张牌!"<

} }while((ans=='h')||(ans=='H')); for(;(cpu<16)&&(cputurns<6);cputurns++) { cout<>ans; label1: if(ans=='y'||ans=='Y') { (20,'\n');//把输入行中的其余字符取空,以便后面的输入从新一路轮开始 cout<<"请输入特别玩家的6位密码:"; (s1,7);//提取密码 if(!strcmp(s1,answer)) { cout<<"\t\t\t这张牌是:"<>ans; if(ans=='y'||ans=='Y') { cout<<"你的现金还有 $"<>bet1; if(money-bet1<0) { cout<<"你没有足够的赌注"; }

扫雷的课程设计报告

西安文理学院信息工程学院课程设计报告 设计名称:数据结构课程设计 设计题目:实现一个N*M的扫雷游戏 学生学号:1402130407 专业班级:软件13级四班 学生姓名:樊秀琳 学生成绩: 指导教师(职称):谢巧玲(讲师) 课题工作时间:2015.6.22 至2015.7.3

说明: 1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个 学生。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。 3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律 按不及格处理。答辩由指导教师实施。 4、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设 计的情况另行规定。 5、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按 不及格处理。

信息工程学院课程设计任务书 指导教师:院长: 日期:2015年6月22日

信息工程学院课程设计进度安排表 学生姓名:樊秀琳学号:1402130407 专业:软件工程班级:13级四班 指导教师签名: 2014年6月22日

成绩评定表 学生姓名:樊秀琳学号:1402130407 专业:软件工程班级:13级四班

摘要 摘要: 扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法设计和语言实现,如C,C++,VB,JAVA等。我利用eclipse编写了与它功能相似的扫雷游戏,寓学于乐。 程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。单击屏幕上的笑脸可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时提示游戏失败。其功能类似于Windows操作系统自带的扫雷游戏。论文首先介绍了进行该游戏课程设计的目的,然后是任务描述和设计的相关要求,最后是最重要的需求分析和设计方案。重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解用户的意图,进而做出相对应的动作。清除未靠近地雷区的方块较为复杂。 关键词:算法设计;事件;Eclipse

纸牌游戏实验报告

纸牌游戏实验报告 篇一:纸牌游戏Go Fish实验报告 纸片游戏Go Fish课程设计 一目的 通过对GO FISH的课程设计,明白数据结构设计理念,理解并掌握链表的操作,进一步的了解数据结构的含义。 二需求分析 决定玩家的数量,先简单化,建立两个玩家,完成设计; 1、确定数据结构模版; 2、建立数据结构类型; 3、完成数据操作; 4、确立算法设计。 三概要设计 1、数据结构设计 该课程设计采用链表和类相结合模式,建立牌堆和牌操作的链表结构: class Card { public: }; 牌堆类:采用整型数组建立牌堆,并用随机数打乱牌序。 class Node { public:

Node(); Node(int value,Node *next);//初始化节点构造函数 int ListLength(Node* L); //链表的计数 int Search(Node* L , int num); //链表的查找Node* head_Insert(Node* head , int num);//从表头插入节点Node* Delete(Node* head , int num); //删除节点 void Print(Node *head);//链表输出 int card_num; char clore; Node *Link; void NewCard();//新建牌 void Shuffle();//洗牌int Licensing(int n);//发牌int CARD_A[52]; private: private: 采用链表结构方式,来构造玩家手牌。用链式结构进行操作进行删除和插入。 2、算法函数 int Scoring(NodePtr &player,int score)//计分; int Players_operations(NodePtr &player1,NodePtr &player2,int Choose,int i,Card CardBign)//玩家操作; 两个函数分别用来计算与进行牌的操作。 2、主函数 main();//主函数 主函数进行数据接收和输出显示。 四详细设计 1、类的构造与实现 类的构造:

C课程设计点纸牌游戏程序

#i n c l u d e #include #include #include #include #include class Game { public: Game() { win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=100,bet=0; player=0,cpu=0; char answer1[]="123456"; strcpy(answer,answer1); char answer2[]="654321"; strcpy(daan,answer2); }; void rules();//显示规则 void BET(); //下注 void deal();//交易

void run(Game &);//进行异常处理 void hit1();//拿下一张牌 void hit2();//确保庄家不会爆庄并且点数大于16 void print();//打印出最后结果 void results();//最后的胜利结果 void check();//检查是否爆庄 Game operator=(Game &d);//运算符重载 void replay(char &ans);//是否进行新一轮的游戏 void clean();//清屏 void wait(int); void pause(); int GetInt(int,int); int random(long,long); private: int playerturns,cputurns,money; int win,lose,draw,bet; float player,cpu; char answer[7]; char daan[7]; }; //---------------------------------------------------------------------------------------

《数据结构》课程设计报告-运动会分数统计 一元多项式 迷宫求解 文章编辑 纸牌游戏等

南京林业大学 数据结构课程设计报告 专业:计算机科学与技术 课程名称:数据结构 姓名: 学号:090801126 指导老师: 时间: 2011年1月

目录要点: 一.具体内容(题目) (1) 二.需求分析(功能要求) (2) 三.概要设计(程序设计思想) (3) 四.详细设计(源代码) (6) 五.调试分析(运行结果显示及说明) (31) 六.课设总结 (34) 具体内容: 题目1: 运动会分数统计** 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7,5,3,2,1,取前三名的积分分别为:5,3,2,;哪些取前五名或前三名由学生自己设定。(m〈=20,n〈=20); 题目2:一元多项式** 任务:能够按照指数降序排列建立并输出多项式; 能够完成两个多项式的相加,相减,并将结果输入; 题目4:迷宫求解 任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出; 题目5:文章编辑** 功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行; 题目6:Joseph环 任务:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m 时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有的人出列为止。设计一个程序来求出出列的顺序。

高级编程技术课程实验报告-扫雷游戏

高级编程技术课程实验报告 班级通信一 班 姓名陈远春学号201100120084 课程实验内容 扫雷游戏,是Windows操作系统自带的一款经典游戏。其规则简单,上手容易,不论男女老少皆可娱乐。扫雷的目的就是要把所有非地雷的格子揭开即胜利。踩到地雷格子就算失败。 设计的扫雷游戏应包含以下功能:能够显示主菜单和界面;能够接收鼠标输入功能;能够根据规则翻转相应的格子;能够标记指定格子的功能;游戏胜负判断功能;游戏支持背景音乐功能;游戏提供帮助说明。 设计分工安排 本程序由三人共同完成。 其中我主要负责程序代码编写调试和上台讲解方面的工作。 其余两个主要负责游戏设计部分模块的工作。 一、系统概述 扫雷游戏,是Windows操作系统自带的一款经典游戏。其规则简单,上手容易,不论男女老少皆可娱乐。扫雷的目的就是要把所有非地雷的格子揭开即胜利。踩到地雷格子就算失败。 本设计的扫雷游戏包含以下功能:能够显示主菜单和界面;能够接收鼠标输入功能;能够根据规则翻转相应的格子;能够标记指定格子的功能;游戏胜负判断功能;英雄榜记录更新;游戏支持背景音乐功能;游戏提供帮助说明。 二、需求分析 随着世界经济的长足发展和计算机技术的日益成熟,计算机被应用到人类活动的各个领域,各种应用软件也相继问世,这其中有相当一部分是游戏软件。使用游戏软件自然是为了满足人们对娱乐性的要求,而有些软件大都采用3D设计对系统配置的要求较高。 在众多游戏软件中,也不乏一些小游戏的身影,它们对系统的配置要求较低。能够满足人们对娱乐性的需求,是人们在完成工作娱乐时候的最好选择。在各种操作系统中都附带了一些小的游戏,而这些游戏也成为电脑用户软件中不可或缺的一部分。 扫雷游戏是比较经典的一款小游戏,过去的几年里Windows操作系统历经数次换代,变得越来越庞大、复杂,但这个可爱的小游戏在任何版本的Windows操作系统里去却依然保持着原貌。但几乎每个电脑使用者都接触过它,并且深爱着这款小游戏。

C程序课程设计报告(扫雷游戏)

C程序设计 扫雷游戏 一、设计题目:扫雷游戏 二、设计目的 1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2.培养学生综合运用所学知识独立完成课题的能力。 3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基

本素质。 5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。 三、设计要求 1.汪洋和孔维亮组成设计小组。小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。 2.查阅相关资料,自学具体课题中涉及到的新知识。 3.采用结构化、模块化程序设计方法,功能要完善,界面要美观。 4.按要求写出课程设计报告,并于设计结束后1周内提交。 一概述 1)掌握数组指针的概念及其应用 2)培养团结合作精神 2. 课程设计的要求 要求我们有扎实的C语言知识,以及良好的编程习惯,能够熟练的应用循环,有毅力,还要求我们有较强的合作精神,善于总结。同时还要求我们自学C语言作图部分知识。在必要时还要上网查相关资料。 3.课程设计的主要设计思想 扫雷游戏主要用了一个10行10列的二维数组,刚开始利用random随机布雷。 每一个程序最主要的是算法。扫雷游戏算法的重点是一开始统计好每个格子周围有多少雷,当鼠标左键点在格子上时做出判断,如果周围8个格子有雷则显示出雷数,如果没有雷则显示空白格(在四个角的格子显示周围3个格子,其它边缘的格子显示周围5个的状态),我们在主函数中用两个for语句来判断周围雷数。我们还加了鼠标处理函数。 如果格子上有雷则调用函FailExitGame(),显示“Fail!”,游戏结束。若所有的雷都标出,且所有的格子都处理过,则调用函数ExitGame(),显示“OK,Good!”,游戏结束。游戏结束后,按任意键出去。

C++课程设计报告---21点纸牌游戏程序

#include #include #include #include #include #include class Game { public: Game() { win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=100,bet=0; player=0,cpu=0; char answer1[]="123456"; strcpy(answer,answer1); char answer2[]="654321"; strcpy(daan,answer2); }; void rules();//显示规则 void BET(); //下注 void deal();//交易 void run(Game &);//进行异常处理 void hit1();//拿下一牌 void hit2();//确保庄家不会爆庄并且点数大于16 void print();//打印出最后结果 void results();//最后的胜利结果 void check();//检查是否爆庄 Game operator=(Game &d);//运算符重载 void replay(char &ans);//是否进行新一轮的游戏 void clean();//清屏 void wait(int); void pause(); int GetInt(int,int); int random(long,long); private: int playerturns,cputurns,money; int win,lose,draw,bet; float player,cpu; char answer[7]; char daan[7]; }; //--------------------------------------------------------------------------------------- void Game::wait(int milli) {

java_扫雷_课程设计_报告

《JAVA程序设计》 课程设计报告 系别:计算机与电子系 专业班级:计算机科学与技术0803班 学生姓名:曾一墙 指导教师:徐鹏 (课程设计时间:2011年6月13日——2011年6月24日) 华中科技大学武昌分校

课程设计报告撰写内容、格式与成绩评定 一、课程设计报告的撰写内容与要求 1.课程设计总结报告应包括:前言、基本原理或理论、设计计算书或实验报告、结论、图纸(框图、流程图)、参考资料等;或调查、访谈报告、调查问卷、调查提纲等。 2.课程设计总结报告应书写工整,文句通顺、精炼、逻辑性强,图纸和曲线的绘制应符合规范。 3.调查型课程设计应根据调查结果撰写调查报告。调查报告内容包括:题目、参加时间、地点、方式、过程、调查对象一般情况、调查内容、发现的问题、调查结果和调查分析及体会等。调查报告要求语言简练、准确;叙述清楚、明白;数据、资料可靠;结论有理、有据。 4.图纸应布局合理,比例恰当,线条分明,字体工整,符合国家制图标准。 5.课程设计报告字数要求:理工、艺术类不少于2000字,其他专业不少于3000字。 二、课程设计成绩评定 1.学生的课程设计成绩由平时成绩、业务考核成绩两部分组成,均为百分制记分,其中平时成绩占总成绩的30%,业务考核成绩占70%。业务考核含设计报告(计算说明书、调查提纲、调查问卷等)、绘制的图纸、编制的软件、制作的模型、撰写的论文或问卷统计、调查分析等的完成及质量情况;平时成绩含设计表现、到课率等。 2. 教师按学生实际成绩(百分制,含平时成绩和业务考核成绩两部分)登记并录入教务MIS系统,由系统自动转化为“优秀(90~100分)、良好(80~89分)、中等(70~79分)、及格(60~69分)和不及格(60分以下)”五等。

数据结构课程设计报告—纸牌游戏

课题设计2:扑克牌游戏 1、问题描述 编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的 倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:这时正面向上的牌有哪些?存储结构: 源程序:#include void main() { int i,j,a[52]; for(i=2;i<=52;i++) for(j=i-1;j<52;j+=i) a[j]=!a[j]; printf("正面向上的牌有:"); for(i=0;i<52;i++) if(a[i]) printf("%4d",i+1); } 测试结果:正面向上的牌有:1 4 9 16 25 36 49 算法的时间复杂度:T(n)=O(n2) 课题设计3:joseph环 一. 需求分析:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。首先创建一个空链表,初始化链表,构造出一个只有头结点的空链表,建立好一个约瑟夫环。 1. 输入的形式和输入值的范围 本程序中,输入报数上限值m和人数上限l,密码,均限定为正整数,输入的形式为一个以“回车符”为结束标志的正整数。 2. 输出的形式 从屏幕显示出列顺序。 3. 程序功能 提供用户从键盘输入,Joseph约瑟夫环的必要数据,并显示出列顺序。 二、概要设计 以单向循环链表实现该结构。 1. 抽象数据类型的定义为:

ADT LNode { 数据对象:D={ai | ai∈CharSet,i= 1,2,…,n,n≥0} 数据关系:R1={< ai-1 ,ai > | ai ∈D,I=2,…,n} 三.源程序:#include #include typedef struct Node { int key;//每个人持有的密码 int num;//这个人的编号 struct Node *next;//指向下一个节点 }Node,*Link; void InitList(Link &L) //创建一个空的链表 { L=(Node *)malloc(sizeof(Node)); if(!L) exit(1); L->key=0; L->num=0; L->next=L; } void Creater(int n,Link &L) //初始化链表 { Link p,q; q=L; for(int i=1;i<=n;i++) { p=(Node *)malloc(sizeof(Node)); if(!p) exit(1); printf("the key_%d is:",i); scanf("%d",&p->key); p->num=i; L->next=p; L=p; } L->next=q->next; free(q); } void main() { Link L,p,q; int n,x; L=NULL; InitList(L);//构造出一个只有头结点的空链表 printf("please input the totle number of people:"); scanf("%d",&n);//总共的人数n printf("the start key is:");

游戏开发课程设计报告模版-扫雷游戏报告(定稿)

中原工学院信息商务学院 课程设计报告 2016~2017学年第一学期 课程游戏开发课程设计 课程设计名称扫雷游戏 学生姓名*** 学号***** 专业班级数媒141 指导教师郑全录 2016年12月

目录 第一章设计内容及要求 (1) 1.1 扫雷游戏的基本要求 (1) 1.2 游戏需要实现的主要功能 (1) 第二章需求分析 (2) 2.1扫雷游戏界面设计 (2) 2.2 雷区的设计 (2) 2.3 音效的设计 (3) 2.4 扫雷英雄榜的设计 (3) 第三章总体设计 (5) 3.1 总体功能图 (5) 3.2 总体流程图 (5) 第四章主要功能设计流程 (6) 4.1 雷区设计流程图 (6) 4.2 音效设计流程图 (6) 4.3 英雄榜设计流程图 (7) 第五章主要功能设计流程 (8) 5.1 类之间关系图 (8) 5.2程序运行效果图 (8) 5.2.1 游戏登录界面 (8) 5.2.2游戏菜单界面 (9) 5.2.3游戏运行界面 (10) 5.2.4游戏英雄榜界面 (12) 第六章总结 (13) 参考文献 (14) 附录 (15)

第一章设计内容及要求 1.1扫雷游戏的基本要求 当前各种游戏层出不穷,因为游戏的开发成本非常大,所以游戏的开发具有一定的风险性,但是一些小游戏的开发成本具有成本小,编写简单的优势,所以这些小游戏在游戏开发中也占有一席之地。在这类小游戏中包括益智类游戏,它以画面精美、游戏方法简单等特点得到大家的认可。成为人们在工作之余不可或缺的好伙伴。针对这种情况我选择了扫雷游戏该课题作为我的课程题目。 Windows XP和Windows 7系统提供的扫雷游戏是一个很有趣的游戏。本次课程设计的主要任务是使用JA V A语言编写一个与其类似的扫雷游戏。具体要求如下: 1、扫雷游戏分为初级、中级和高级三个级别,同时扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。 2、选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键单击雷区中任何一个方块便启动了计时器。 3、用户要揭开某个方块,可单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下没有雷,则显示一个数字,该数字代表此方块周围的8个方块中共有多少颗雷。 4、如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),窗口左上角的雷数计数器将会减少一个。 5、扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。 6、用户如果遇到疑问的方块,可以勾选游戏菜单下的标记选项卡(或者用快捷键Alt+G然后点击M)即可标记该可疑方块,此时双击右键并可出现“?”标记。另有颜色选项,当用户选中该项时,游戏将以最低图像像素来显示。 7、如果用户需要使用提示声,可选中声音选项,此时将听到计时的咔嗒声。当用户点中雷时,将有爆炸声产生;胜利时,将有凯旋的旋律播放,此时企鹅出现欢悦表情。 1.2游戏需要实现的主要功能 1、用户可以自定义级别并且可以任意输入雷数; 2、具有计时功能,既显示用户完成所有扫雷任务所需要的时间; 3、自动保存扫雷英雄榜。

数据结构纸牌游戏课程设计报告

合肥学院 计算机科学与技术系 课程设计报告 2009~2010学年第二学期 课程数据结构与算法 课程设计名称纸牌游戏 学生姓名常丽君 学号0704013024 专业班级08计科(3) 指导教师李红沈亦军

2010年6月 题目:(纸牌游戏)编号为1~52张牌,正面向上,从第二张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后从第三张牌开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;直到以52为基数的翻过,输出:这时输出正面向上的牌有哪些? 一、问题分析和任务定义 1、问题分析:编号为1的牌没有进行翻牌,即翻牌的次数为0,仍然为正面朝上;编号为2的牌在整个过程中只翻了一次,为反面朝上;编号为3的牌在整个过程中只翻了一次,为反面朝上;编号为4的牌在整个过程中翻了两次,为正面朝上;编号为5的牌在整个过程中翻了一次,为反面朝上;编号为6的牌在整个过程中翻了三次(由于6是 2、 3、6的倍数),为反面朝上;以此类推直至编号为52的牌,从上述过程可以总结出这样的规律:从编号为1的第一张牌到编号为52的最后一张牌,只要它翻过的次数为偶数则是正面朝上,反之则为反面朝上。因此我们可以依据每张牌翻过的次数来确定它最终是否为正面向上,从而输出实验所需要的结果:所有正面向上的牌的编号。 2、任务定义:实现本程序需要解决以下几个问题: (1)如何存储52张牌,所选择的存储结构要便于实现题给要求的操作。 (2)如何设计翻牌程序。 (3)在经过所有的翻牌以后,如何知道每一张牌是否为正面向上。 (4)如何输出所有正面向上的牌的编号。 本问题的关键在于选择合适的数据结构存储52张牌,难点在于在所选的数据结构下实现题给要求的翻牌操作。最主要的难点在于如何设计翻牌程序。第二个难点在于所有的牌都进行了翻牌操作后,如何知道每一张牌是否为正面向上。 3、原始数据的输入、输出格式:用户选择开始游戏后,输入一个正整数K(1<=K<=51),窗口将显示翻牌K次之后所有正面向上的牌的编号,然后选择继续游戏或结束游戏。 二、数据结构的选择和概要设计 1、数据结构的选择 本实验可以选择顺序表或单链表存储52张纸牌的信息,我选用单链表这种数据结构来对52张牌进行链接存储。单链表是有限个具有相同类型的数据元素组成的链表,且该链表中的每一个结点只有一个指针域。根据第一部分的问题分析可知该单链表中每个结点应包括三个部分:存储该结点所对应的牌的编号信息number域、记录该结点所对应的牌的翻牌次数times域、存储其直接后继的存储位置的next域(指针域)。 图1 单链表结点数据类型 故可创建以单链表为存储结构的结构体,如下: //自定义单链表结点数据类型 typedef struct node { int number; //纸牌的编号 int times; //翻牌的次数 struct node *next; //指向下一个结点的指针 }LinkList;

数据结构课程设计纸牌游戏

攀枝花学院 学生课程设计(论文)题目:纸牌游戏 学生姓名: 00000 学号:200000000000 所在院(系):数学与计算机学院 专业:网络工程 班级: 2012级1班 指导教师:李世文职称:教授 2014年01月03日 攀枝花学院教务处制

攀枝花学院本科学生课程设计任务书 课程设计(论文)指导教师成绩评定表

摘要 数据结构课程是计算机专业中必修的核心课程之一,也是一门理论性很强的一门课程,同时也是一门锻炼程序涉及能力的实践课程,“数据结构”成为计算机程序设计的重要理论技术基础,它不仅是计算机学科的核心课程,而且已成为其它理工专业的热门选修课。主要包括线性表、树和二叉树以及图等基本类型的数据结构。数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科,包括数据的逻辑结构、数据的存储结构和数据的运算这三个方面的内容,其中逻辑结构可分为线性结构和非线性结构;存储结构可分为顺序存储和链式存储两类,图则属于逻辑结构中的非线性结构。广度优先搜索(BFS)用的队列一步一步完成的,从而找到的是最短路径。 纸牌游戏课程设计包括纸牌信息的建立、了解其翻拍的原理、并简明阐述翻牌的具体步骤与流程、最后输出与打印翻牌结果,整个过程使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。掌握一般软件设计的基本内容和设计方法,培养学生进行规范化软件设计的能力。而且使学生掌握使用各种计算机资料和有关参考资料的方法,提高学生进行程序设计的基本能力。 关键词:数据结构,纸牌游戏,BFS,遍历

java扫雷游戏课程设计报告

Java课程设计报告 姓名 号学 系院 级班 业专 1.设计内容及要求 1.1 扫雷游戏的基本要求 Windows 2000/XP系统提供的扫雷游戏是一个很有趣的游戏。本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。具体要求如下: (1) 扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。 (2) 选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。 (3) 用户要揭开某个方块,可单击它。若所揭方块下有泪,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。. (4) 如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为

是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。 (5) 扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。 (6)用户可以选择标记疑问的方块,用可以勾选游戏菜单下的标记(或者用快捷键alt+G 然后M)即可,此时双击右键并可出现“?”标记。另有颜色选项,当用户勾选此项时,游戏将以最低图像像素来显示。 (7)如果用户需要即使提示声,并可选中声音选项,此时将听到计时的卡塔声。当用户点中雷时,将有爆炸声产生,胜利时,将有凯旋的旋律播放,此时企鹅出现欢悦表情。 1.2 需实现的主要功能 (1)用户可以自定义级别并且可以任意输入雷数; (2)具有计时功能,即显示用户完成移动盘子所花费的时间; (3)用户可以选择是否有音效; (4)自动保存扫雷英雄榜; 2.需求分析 2.1 扫雷棋盘的布局设计 系统的整体布局为:CardLayout布局, 采用了菜单、按钮、面板…等组件,菜单主要包括开始,选择级别,标记,扫雷英雄榜,退出,按钮的功能是重新开始新的游戏。 2.2 雷区的设计 MineArea类是javax.swing包中Jpanel容器的子类,实现了ActionListener 和MouseListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。标明MineArea类的主要成 图2-1 MineArea类的UML图

实验一 21点纸牌游戏

冰之龙设计 实验一21点纸牌游戏 专业:软件工程班级:09软工学号:1200911041XX 姓名:XXX 实验日期:2010-09-30 实验地点:B102 指导老师:吴景岚 一.实验原理 “21点”是一个古老的扑克牌游戏,游戏规则是:各个参与者设法使自己的牌达到总分21而不超过这个数值。扑克牌的分值取它们的面值,A充当1分或者11分(由玩家自己选择一种分值),J.Q和K人头牌都是10分。 二.实验目的 庄家对付1到7个玩家。在一局开始时,包括庄家在内的所有参与者都有两张牌。玩家可以看到他们的所有牌以及总分,而庄家有一张牌暂时是隐蔽的。接下来,只有愿意,各个玩家都有机会依次再拿一张牌。如果某个玩家的总分超过了21(称为“引爆”),那么这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只要庄家的总分等于或小于16,那么他就必须再拿牌,如果庄家引爆了,那么还没有引爆的所有玩家都将获胜。引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家与庄家打成平局。 三.实验方法 1.首先定义表示扑克牌花色与面值的枚举类型,这样程序可读性更

强 2.其次,方法Game()用来运行游戏,下面为用伪代码描述的整个游戏的流程: 洗牌 给庄家和玩家发最初的二张牌 隐藏庄家的第一张牌 显示庄家和玩家手中的牌 依次向玩家发额外的牌 显示庄家的第一张牌 给庄家发额外的牌 if(庄家引爆) 没有引爆的玩家人赢 引爆的玩家平局 else for(每个玩家) if(玩家没有引爆且玩家的总分比庄家大) 宣布玩家赢 else if(玩家的总分与庄家相等) 宣布平局 else 宣布玩家赢 四.实验步骤 (1)建立工程game_of_21_point (2)将软件包中的utlity.h复制到game_of_21_point文件夹中,并将utility.h加入到工程中。 (3)建立头文件card.h,声明相关用户自定义类型,结构体Card 的运算符 << 进行重载,具体内容如下: //文件路径名:game_of_21_point\card.h #ifndef__CARD_H__ #define__CARD_H__ Typedef enum { //扑克牌面值:ACE(A),TWO(2)到TEN(10),JACK(J),QUEEN(Q),KING(K) ACK=1,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING } RankType; Typedef enum { //扑克牌花色:(梅花),DIAMONDS(方块),HEARTS(红桃)和SPADES(黑桃)

扫雷游戏-课程设计报告

J A V A课程设计题目:扫雷游戏 院(系)计算机信息工程学院 专业网络工程 班级 13级网络工程1班 学生姓名方琴刘莉虹程子卿薛中意 设计时间 2015年8月 指导教师万中英

提交日期 2015年10月8日 摘要 《扫雷》是一款大众类的益智小游戏。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷。先任意点开少量的方格,没有爆炸时,会出现一个数字,这个数字代表的意思是以它为中心的9个格子内所有雷的个数。一般围在一堆数字中间的有可能是雷,你在你认为是雷的那里插旗,就可以把它设定为雷,然后在数字区用鼠标左右键双击,可以打开非雷区,等打开所有非雷区,你就赢了。 采用GUI界面设计,窗口定位,绘图机制,鼠标监听等Java技术。用户可以自己选择地雷的数量,地雷随机分布在17*24的方块矩阵中,地雷数量越多,难度越大。鼠标放在方格上,单击鼠标左键开始游戏,按空格键插旗。如果插旗错误,或是点击到了地雷,则游戏失败。

1 引言 该设计的目的及意义 该设计的要求 相关技术 2 总体设计 功能设计 3 详细设计 系统界面设计 流程图 界面截图

程序描述 选择地雷数量 游戏界面 4 课程设计总结 遇到问题解决问题过程 系统存在的问题,进一步要做的工作 课程设计心得体会 5 附录(程序代码) 该设计的目的及意义

1.利用扫雷游戏巩固和Java语言程序设计这一课程的基本 知识的理解和掌握; 2.掌握Java语言程序设计中编程和程序调试的基本技能; 3.基本掌握完全面向对象程序设计的基本思路和方法; 4.利用Java语言程序设计学会基本的软件设计; 5.掌握书写程序设计说明文档的能力。 课程设计要求 1. 分析课程设计题目的思路及要求; 2. 编写程序代码,调试程序使其能正确运行; 3. 设计完成的软件要便于操作和使用,有整齐、美观的使用界面; 4. 能实现简单的扫雷游戏; 相关技术

课程实训报告

课程实训报告 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

信息工程学院课程实训报告 姓名:谢成林 学号:45 实训名称:C/C++项目实训 所在班级:14级软件工程2班 实训时间: 2015年6月8日-2015年6月18日实训地点:工B201 实训教师: 实训企业:上海杰普软件科技有限公司 实训成绩: 宿州学院信息工程学院实习实训中心制

三、项目开发过程(1写明项目开发需要用到的C/C++知识点,并给出相关重要代码,并在代码后做出注释。2 写出在项目开发环境下的开发步骤,尽可能详细。可续页。) 1、相应的知识点 1、导包:如果需要用到其他包中的类就需要导包 本次实训主要使用的包 工具包 布局画界面 布局画界面 部分 2数组 数组有基本数据类型和引用型数据类型,有一维和二维,二维是存放一维的数组,二维数组一般确定一个有X,Y轴坐标的位置。 而且数组的初始化也有静态的和动态,不得混用。 以下是利用数组添加图片,添加鼠标的事件监听等。

3产生随机数 利用随机数产生1到81的随机数 4鼠标点击事件 BUTTON1左击,BUTTON2中击,BUTTON3右击。 5、结构体语 (1)if条件语句 有些代码只能在满足条件之后可以执行的。 if(条件){} .else{} 多支语句 本次实训不仅利用if语句判断是否右击,解决了雷数的加减问题,还解决了所点击是否为雷,随后找出所雷并标出的问题等。

(2)循环语句 有些代码重复执行 循环语句可以很好的执行重复执行的代码,就如以下,利用for循环很好的解决了初级,中级,高级布雷任务等。 6界面和菜单

数据结构课程设计 纸牌游戏

纸牌游戏 1.课程设计目的 本课程设计是为了配合《数据结构》课程的开设,通过设计一完整的程序,使学生掌握数据结构的应用、算法的编写、类C语言的算法转换成C程序并用TC上机调试的基本方法。 2.设计方案论证 2.1课程设计任务 纸牌游戏,编号为1~52张牌,正面向上,从第二张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后从第三张牌开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;直到以52为基数的翻过,输出:这时输出正面向上的牌有哪些? 2.2设计思路 2.2.1程序思路 编号为1的牌没有进行翻牌,即翻牌的次数为0,仍然为正面朝上;编号为2的牌在整个过程中只翻了一次,为反面朝上;编号为3的牌在整个过程中只翻了一次,为反面朝上;编号为4的牌在整个过程中翻了两次,为正面朝上;编号为5的牌在整个过程中翻了一次,为反面朝上;编号为6的牌在整个过程中翻了三次(由于6是2、3、6的倍数),为反面朝上;以此类推直至编号为52的牌,从上述过程可以总结出这样的规律:从编号为1的第一张牌到编号为52的最后一张牌,只要它翻过的次数为偶数则是正面朝上,反之则为反面朝上。因此我们可以依据每张牌翻过的次数来确定它最终是否为正面向上,从而输出实验所需要的结果:所有正面向上的牌的编号。 2.2.2数据结构的选择 因为编号为1~52的52张牌没有要求在物理位置上相邻接,且在翻牌操作时要对编号依次进行判断,很容易想到用指针来进行操作。为方便起见,我选用单链表这种数据结构来对52张牌进行链接存储。单链表是有限个具有相同类型的数据元素组成的链表,且该链表中的每一个结点只有一个指针域。根据第一部分的问题分析可知该单链表中每个结点应包括三个部分:存储该结点所对应的牌的编号信息data域、记录该结点

相关文档
最新文档