猜数字游戏的分析与实现

  • 格式:doc
  • 大小:271.50 KB
  • 文档页数:20

下载文档原格式

  / 20
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

一游戏说明二总体设计三程序代码四运行结果五附录文档

一游戏说明(猜数字)

1使用说明

(1)开始功能键选择

(2)系统将提交的数与它自动产生的数进行比较,输出结果“*A*B”形式。其中A代表数字正确相应位置也正确,B代表数字正确但位置不正确。如:1A3B表示游戏者有1个数字的位置正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不对,即游戏者已经猜出4位数据,但有3个数据位置不对

2程序说明书

(1)程序的功能说明:猜数字游戏是一个运行在Windows平台下的小型游戏软件,依据猜数字游戏的基本规则,给用户进行成绩排行,并可以随着玩家的游戏记录进行更新。游戏用户可以选择开始游、排行榜查看、帮助等主要功能。当用户选择开始游戏时,系统会让用户逐次猜数字,用户每次猜数字后系统会给出本次猜数字的结果提示,如位置和数字都正确的数字个数、数字正确但位置不正确的数字个数。如果用户猜数字的次数超过10次,则提示用户游戏失败,如果在10次之内猜出4个数字和正确的顺序,则提示用户猜数字成功,并到排行榜中进行比较,如果排名在前一名,则计入排行榜中,以便其他用户查看。在排行榜查看功能中,用户可以查看当前的游戏排行,如有新的记录产生,则插入到排行榜中,并把排行榜中位次最末的记录挤出排行榜。在帮助模块,用户可以查看游戏规则,当熟悉规则后可以退出帮助模块。

3 软件可以实现的基本功能

(1)游戏区:玩家可以在游戏区逐次猜数字,系统给出玩家每次猜数字后的提示,包括数值、位置均正确的数字个数和数值正确但位置不正确的数字个数。

(2)查看排行榜:玩家可以查看当前排行榜中的排名顺序,从而确定自己的游戏目标。排行榜的查看按一定顺序显示给用户,便于查看。

(5)帮助:玩家通过帮助功能了解游戏规则和排行榜设置规则。

(4)清除排行榜:玩家可以选择清除排行榜功能,使得排行榜上的玩家姓名和玩家游戏记录从系统中清除,只留下系统默认的玩家名(player)和系统默认记录10次。

二总体设计

1 要求

(1)要求使用多文件方式实现设计;

(2)要求在各个文件内实现结构化设计;

(3)每个模块作为一个单独的文件。

2 文件及函数组成

三.程序代码

1主体游戏程序

using namespace std;

void rand_num( int[] );

void get_num(int[],int);

bool check_num(int[]);

int guess_num(int);

void goal(int,int,int);

void choose_menu();

void new_game();

void show_tiptop();

void show_explain();

void clean_data();

void display();

int choose_level();

void main(){

choose_menu();

}

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#pragma warning(disable:4996)

struct data{

int goal;

char name[20];

};

fstream iofile;

void rand_num(int b[]){

int temp; int temp2;

int c[10] = { 0 };

for (int i = 0; i < 10; i++)

c[i] = i;

srand((unsigned)time(0));

for (int j = 0; j < 4; j++){

temp = rand() % (10 - j) + j;

temp2 = c[temp];

c[temp] = c[j];

c[j] = temp2;

b[j] = c[j];

}

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

cout << b[k] << " ";

cout << endl;

}

void get_num(int b[],int k)

{

cout << "\t\t\t请输入你猜的数字,还剩下"<

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

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

cin >> b[i];

}

bool check_num(int b[])

{

for (int i = 0; i < 4; i++){

if (b[i]<0 || b[i]>9){

cout << "\t\t\t输入错误,请重新输入!\n";

return false;

}

}

return true;

}

int choose_level(){

int x;

cout << "\n\n\n\n";

cout << "\t****************************************************************\n";

cout << "\t****************************************************************\n";

cout << "\t\t\t1.高级\t2.中级\t3.低级\n";

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

cin >> x;

while (x > 2 && x < 1){

cout << "\t\t\t输入有误,重新输入!\n";

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

cin >> x;

}

if (x == 1)return 1;

if (x == 2)return 2;

if (x == 3)return 3;

}

int guess_num(int level){

system("cls");

int A ;int B ;

int a[4] = { 0 };

int b[4] = { 0 };

rand_num(a);

int times = 0;

for (int k = level+7; k > 0; k--){

get_num(b,k);

while (!check_num(b)){

k--;

get_num(b,k);