猜数字游戏课程设计报告

时间:2024.4.20

 

第一章                                                       课程设计的目的和要求

 1.1 课程设计的目的:

用高级程序语言设计出猜数字游戏系统,实现猜数字游戏。通过用高级程序语言制作程序,熟悉用高级程序语言编程的操作和步骤,学习高级程序语言的运用,以及高级程序语言实验报告的书写格式。

 1.2 课程设计的要求:

1)   只能使用高级程序语言,源程序要有适当的注释,使程序容易阅读;

2)   至少采用文本菜单界面;

3)   建议使用结构体和链表等数据结构;

4)   学生可自动增加新功能模块;

5)   写出课程设计报告,具体要求见相关说明文档。

第二章                                                                                  课程设计任务内容

2.1 总体目标:

    猜数字游戏软件的总体目标是按照特定游戏规则为用户提供一个方便友好的游戏界面,同时给用户提供排行榜的功能使用户能够按照特定的目标提高自己的成绩,并且提供相应的帮助功能。游戏规则如下:

1)游戏软件随机产生4个数字,但不显示,给用户提供输入提示符,让用户猜4个数字的值和位置顺序。如果数字值和位置均正确,则猜数字成功。

2)玩家有10次猜数字机会,如果在10次之内仍未猜出正确的数字和位置顺序,则提示用户游戏失败。

3)一旦玩家在10次的次数限制内猜出正确的数字和位置顺序,则赢的游戏。

4)当玩家赢得游戏后会与排行榜中的前五名玩家的游戏纪录比较,如果排名能够进入前五名,则更新排行榜,使当前玩家成为入榜选手。

5)计分规则:猜数字所用次数即为分数,所以分数越少证明玩家水平越高,排行榜中也是排列分数最少的前五名选手。

2.2  基本功能:

本游戏软件需要实现以下一些基本功能:

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

1)   刷新排行榜:当玩家成功完成一轮猜数字游戏后,可以通过和排行榜中相应记录的比较判断玩家是否可以进入排行榜,进入排行榜的资格是游戏成绩在前五名的玩家。

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

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

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

第三章                                                       详细设计说明

3.1程序设计思路:

猜数游戏的目标是按照设定的游戏规则为玩家提供一个简单而愉快的游戏界面,同时给玩家一些特定的功能,便于更好的使用该游戏软件。

在对本程序的实现过程中,将各个功能分别由不同的函数来实现,从而完成了对本程序的模块划分。该游戏共分为4个模块,分别是游戏模块,查询模块,帮助模块,退出模块。围绕这4个模块,大量函数,互相调用,如:StartProgram();SortByName();PrintHelp();等等,还用了大量的文件指针,文件的读写与存储。

本程序在实现游戏的基本功能同时,还提供了查询与帮助的功能,因此玩家可以更好的适应这个游戏,也达到了设计这个游戏的目的了。而设计的重点在于随机数字的产生与游戏的提示,这两个方面的设计决定了程序运行的正确性和质量。

3.2    主程序模块结构示意图:

                                                                                                               图3-1        主程序模块图

3.3    函数流程图:

                                                                                                                 图3-2          总流程图

                                                                                                               图3-3          游戏流程图

第四章                                                       软件使用说明

4.1.  软件使用说明:

1)   本程序的运行环境为DOS操作系统,执行文件为:猜数字.exe;

2)   进入演示程序后,即显示主菜单界面,如图所示:

3)   用户输入相应命令的数字;

4)   游戏部分:用户按提示分别输入4各不相同的数字,两个数字间用“空白键”隔开,每行结束符为“回车符”。

4.2.  软件运行界面:

1)   游戏界面

2)   按玩家姓名浏览排行榜

3)   按玩家成绩浏览排行榜

4)   帮助选项

第五章                                                       课程设计心得与体会

课程设计是本科学习阶段一次非常难得的理论与实际相结合的机会,通过这次比较完整的一个程序的设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的基础知识,解决实际问题的能力,同时也提高我查阅文献资料、对程序整体的把握等其他能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富。这是我们都希望看到的也正是我们进行课程设计的目的所在。

虽然设计内容繁多,过程繁琐但我的收获却更加丰富。各种组件的运用,各种算法的应用,各种控件的利用我都是随着设计的不断深入而不断熟悉并逐步掌握的。和老师以及同学的沟通交流更使我对程序整体的规划与设计有了新的认识也对自己提出了新的要求。

提高是有限的但提高也是全面的,正是这一次设计让我积累了许多实际经验,也必然会让我在未来的工作学习中表现出更高的应变能力和理解力。

顺利如期的完成本次课程设计给了我很大的信心,但是也让多不足的地方,学习其实就是一个不断完善的过程,正视自己的不足之处,在以后的工作和学习中不断的弥补这些不足之处,在以后的生活中也要保持同样的态度,不断的完善自己。

附录一    参考文献

郭翠英主编的《C语言课程设计实例精编》;

张芳妮 吕波 译《C语言编程常见问题解答》;

谭浩强《C程序设计题解与上机指导(第二版)》。

伍俊良.VB课程设计与系统开发案例[M].北京:清华大学出版社,2002

附录二    程序清单

#include "stdio.h"

#include "time.h"

#include "stdlib.h"

#include "string.h"

int w;

struct node

{

   char name[20];

   int  scores;

   struct node *next;

};

void display(struct node *head);

struct node *insert(struct node *head,struct node data1);

struct node *del(struct node *head,char *name);

main()

{

     struct node *head=NULL;

    /* struct node z=("king",10);   */

     struct node people[5]={  {"booshi",6},

                              {"bulaie",5},

                              {"jiabao",1},

                              {"jintao",3},

                              {"pujing ",2}

                            };      //已存档的用户得分情况

  int z=1;

  int a[4],b[4];

  int command,m,n,i,j,f,g;

  int k=0,t=0;

  char str[8],str1[8]="king";

  struct node charu;

  struct node moren;

  while(1&&z)

  {

           printf("==================  Geuss The Number  =========================\n");

           printf("     1. New Game                      2. Scan list by score\n");

           printf("     3. Scan list by name             4. Clear List\n");

           printf("     5. Hlep                          6. Exit\n");

           printf("===============================================================\n");

           printf("Please enter the command:");

           scanf("%d",&command);

           if(command==6) z=0;       //

scanf("%d",&command);

switch(command){

case 1 :

  { for(g=0;g<=4;g++)

    head=insert(head,people[g]);

   printf("the best one is %s,%d\n",head->name,head->scores);

   srand((unsigned)time(NULL));

  do{ m=0;

   for( m=0; m<4;m++)

    {a[m]=rand()%10; }

     }        //随机产生四个数字

    while(!(a[0]!=a[1]&&a[0]!=a[2]&&a[0]!=a[3]&&a[1]!=a[2]&&a[1]!=a[3]&&a[2]!=a[3]));        //前提条件,四个数字各不相同

    for(m=0;m<4;m++)

       printf("%d",a[m]);

       printf("\n");

   for( n=1;n<=10;n++)

       {

        printf("please input four numbers(0-9):\n");

           for( f=0;f<4;f++)

          scanf("%d",&b[f]);        //按提示输入四个数字

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

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

     {

       if((j==i)&&(b[j]==a[i])) k++;

           else if(b[j]==a[i]) t++;

     }

     printf("you have tried %d times\n",n);

     printf("%dA%dB\n",k,t);      //输出游戏提示信息

     if(k!=4)

     k=0,t=0;

      else

    { printf("good job!\n");

      printf("please input your name:");

      scanf("%s", str);

      strcpy(charu.name,str);

      charu.scores=n;

      head=insert(head,charu);

      display(head);

      system("pause");

       break;

}} }        //游戏模块

 case 2:

w=0;

    for (g=0;g<=4;g++)

    head=insert(head,people[g]);

    display(head);

    printf("\n");

     system("pause");

     break;        // 按玩家得分查看排行榜

 case 3:  

w=1;

       for (g=0;g<=4;g++)

       head=insert(head,people[g]);

       display(head);

       printf("\n");

        system("pause");

        break;      //按玩家姓名查看排行榜

case 4:

strcpy(moren.name,str1);

    moren.scores=10;

    printf("the list is empty!\n");

   head=insert(head,moren);

   display(head);

   system("pause");

   break;        //清除排行榜

 case 5:    

printf("welcome to the game,you have ten times to  guess\n");

   printf("the numbers  the system given,if you get the\n");

   printf("right numbers congradulations to you ,if not,\n");

   printf("do not lose your confidence,try again,you make it!\n");

   system("pause");

   break;       //帮助模块

case 6:

     printf("game over!\n");

    system("pause");

     break;

 }

  } }

   void display(struct node *head)

 {

  int g,a1=0;

  struct node *p;

  if (head==NULL)

      printf("\n not display!");

  else

  {

    p=head;

   while (p!=NULL&&a1<5)

    {

    printf("%s,%d\n",p->name,p->scores);

     p=p->next;

     a1++;

    }

  }

}

struct  node *del(struct node *head,char *name)

{

   struct node *p,*q;

   if (head==NULL) printf("empty table,not delete!");

   else if (strcmp(head->name,name)==0)

   {

      q=head;head=head->next;free(q);

   }

   else

   {

      p=head;

      while((p->next!=NULL)&&(strcmp(p->next->name,name)!=0))

          p=p->next;

      if (p->next!=NULL)

      {

        q=p->next;p->next=q->next;free(q);

      }

      else

          printf("no name\n");

   }

   return (head);

}

struct node *insert(struct node *head,struct node data1)

{

   struct node *s,*p;

   s=(struct node *)malloc(sizeof(struct node));

   strcpy(s->name,data1.name);

   s->scores=data1.scores;

   s->next=NULL;

   switch(w){

   case 0:

   if (head==NULL)

       head=s;

   else if(head->scores>s->scores)

   {

      s->next=head;

      head=s;

   }

   else

   {

      p=head;

      while (p->next!=NULL &&(s->scores>p->next->scores))

      {

          p=p->next;

      }

         s->next=p->next;

         p->next=s;

   }

    return(head);

   /*  break;    */

  case 1:

  if (head==NULL)

       head=s;

  else if(strcmp(head->name,s->name)>0)

  {

      s->next=head;

      head=s;

   }

   else

   {

      p=head;

      while (p->next!=NULL&&(strcmp(p->next->name,s->name)<0))

      {

          p=p->next;

      }

         s->next=p->next;

         p->next=s;

   }

     return(head);

   /*  break; */

  }

}

更多相关推荐:
打砖块游戏课程设计报告

目录第1章程序设计专题目的与要求111程序设计目的112程序设计的实验环境113程序设计的预备知识114程序设计要求1第2章程序设计内容221概要设计222程序整体设计说明223程序部分源代码及注释824测试结...

24点游戏课程设计报告

目录123基本功能描述2设计思路2软件设计431设计步骤432界面设计533关键功能实现6331发牌功能的实现6332计时功能的实现7333计算功能的实现7334验算功能的实现94567结论与心得体会9参考文献...

连四游戏课程设计报告

第1章引言1第2章任务概述121问题概述1211问题重述1212设计目的122需求分析1221基本要求1222游戏功能介绍123编程语言概述124编程环境概述1第3章概要设计231功能设计232程序结构233基...

游戏24点课程设计报告

游戏24点课程设计报告一题目分析类计算24点任意输入4位数字利用四则运算使之得到结果24输出所有不同算法的计算表达式可为运算优先级而使用括号二问题分析1全面性此问题要求输出结果为24的计算表达式并且要求输出要全...

java_扫雷游戏课程设计报告

滨江学院20xx20xx学年第2学期数字图像处理课程论文专业姓名学号20xx年06月05日设计通信编程课程论文Java设计扫雷游戏王李超20xx2334038南京信息工程大学滨江学院电子工程系南京210041设...

FLASH页面游戏课程设计报告

FLASH页面游戏课程设计报告第一章绪论11课题背景意义随着社会的不断发展人们的生活水平在不断地提高网络游戏也越来越多的融入到人们的生活中去游戏的出现带来了网络上的优势扩宽了人们平时玩的传统游戏的界限给人们带来...

动画与游戏设计 课程设计报告

动画与游戏开发课程报告学号1111020xx103姓名张慧专业班级11级计科本01班日期电子信息工程学院1目录一课程内容及应用领域11基于DirectX的粒子系统3111粒子系统简介3112广告板技术3113粒...

C++课程设计--福彩游戏设计报告

南京理工大学VC++课程设计报告课程:VC++课程设计选题名称:福彩游戏一、程序设计要求(1)定义一个福彩类,封装计算机开出的大奖号码及开奖过程函数和输出大奖号码的函数。(2)定义一个用户类,封装用户输入的数字…

java游戏开发课程设计报告

JAVA游戏开发课程设计报告题目网络益智游戏姓名学号专业班级云红卫081012130软件技术软件082计算机科学与技术系20xx年6月目录1实践过程概述32课程设计题目描述33系统需求分析与设计331系统需求分...

C++程序课程设计报告_21点游戏

随机数枚举类型C面向对象程序设计课程设计报告设计题目21点游戏学生学号学生姓名专业班级学生成绩指导教师医药信息工程学院图像处理与多媒体教研室20xx1一设计任务分析121点游戏介绍21点游戏是一个古老的#9@k游戏...

JAVA课设报告书—扫雷游戏

Java程序设计实验报告2(弹球游戏)[1]1

Java语言程序设计课程设计实习报告题目学号姓名一实验目的1掌握Swing图形用户界面编程以及事件处理等掌握java绘图技术2掌握多线程编程的基本原理能使用RunnableExecutorService等接口进...

游戏课程设计报告(36篇)