c语言填数字游戏求解过程解读,c语言编程--数字游戏.doc

c语言编程--数字游戏

计算机实习报告

面向过程编程

用C语言求解实际问题

一、问题描述

游戏类第15个任务——猜数字游戏

计算机从0~9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数(0不出现在首位),然后让玩家猜该数。若玩家猜对该数,游戏则结束;若玩家猜得不对,则计算机告知玩家,数字猜对了且位置也正确的数字有几个;数字猜对了但位置不正确的数字有几个,然后让玩家继续猜。对每个数玩家最多有m(m>0)次猜的机会。

功能要求:

(玩家可自行设置被猜数的位数n和最多猜测机会数m。

(玩家可用键盘输入其所猜数,也可通过鼠标点选数字给出其所猜数。

(当玩家没有猜对时,用不同颜色的文字显示数字猜对了且位置也正确的数字个数和数字猜对了但位置不正确的数字个数,且显示文字要直观、易理解。例如,正确答案为52467,玩家所猜为53269,则有2个数字(即5和6)数字对位置也对;有1个数字(即2)数字对但位置对。

(玩家猜测m次后仍未猜对,则向玩家公布答案,并询问玩家是否继续进行新游戏。此时玩家可以选择继续进行新游戏或退出游戏。

(当玩家猜对时,输出“恭喜你猜对了”,并询问玩家是否继续进行新游戏。此时玩家可以选择继续进行新游戏或退出游戏。

(玩家可以在游戏进行过程中选择放弃继续猜数。玩家放弃继续猜数后,询问玩家是否继续进行新游戏。此时玩家可以选择继续进行新游戏或退出游戏。

(若玩家猜对数字后选择退出游戏时,询问玩家是否记录其成绩,如果选择记录,则进一步要求玩家输入用户名;否则,直接退出。

(游戏维护一个排行榜,按照猜对一个5位数所用猜测次数由少到多的顺序排序,并在记录完玩家成绩后显示给玩家。

二、需求分析

1)猜数字游戏软件的功能有:

进入主菜单,输入挑战的次数,输入猜测的数字,若在此次数之内没有猜对,则提示挑战失败,是否继续挑战。

若挑战过程中途放弃,则提示是否继续挑战。

若挑战成功,则提示是否记录成绩,输入用户名,计入排行榜。排行榜会按照猜测次数由小到大进行排序。

在猜数字的过程中,每猜一个数字都会提示,数字正确且位置正确的个数是,数字正确但位置不正确的个数是,提示用户继续输入。

2)输入要求:

应用程序运行后,在屏幕上显示一个菜单。用户可以根据需要,选定相应的操作项目。进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。

输出要求:

(1)应用程序运行后,在屏幕上显示一个菜单。

(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。

三、程序设计

针对需要做如下设计:

(1)数据结构设计

1、定义一个结构体数组,储存用户名。

struct paihang

{

char name[N];/*用户名*/

}s[N],s1,s2;

int w[N];

int q=0;

(2)模块设计

本模块主要实现功能的选择

1. 定义一个主函数菜单,选择开始游戏,退出,进入排行榜。

2. 比较用户输入的数与系统随机数是否相同,利用取余的方法,用用户输入的个位数与系统随机数的个位相比,十位与十位相比,以此类推,相同记录加一,得到数字相同,位置也相同的个数。

利用取余的方法,用用户输入的个位数与系统随机数的每一位比较,相同加一,并将相同的数字存储到数组中方便查询。然后,比较输入的数字的每一位,利用取余的方法,用个位与十位相比,若相同,则比较数组中是否含有这个数,含有则减一,跳出循环,由十位与百位相比,不含有则继续,以此类推,得到数字相同的个数,用数字相同的个数减去数字相同位置不同的数字个数。

3. 建立一个排行榜,将猜对的次数进行保存,并按由小到大的次数进行排行。

(3)主程序设计

调用一个菜单函数,显示开始进入游戏,排行榜,退出游戏,排除非法输入。

四、程序实现

(这一部分主要是说子程序的实现,以及引用的语言资源。具体来说,就是给出程序模块的实现)

(1)程序总体思路:

进入主页面菜单,选择管理员模式或用户模式。管理员模式要输入密码,方可进入。选择录入,修改和删除歌曲信息。用户模式中,包含各种查询功能,按编号,属性,歌曲名笔画,歌手名字的字典顺序,作者名字的字典顺序进行查询,点播。

(2)各模块函数的实现

1. void menu()主菜单信息函数

进入主菜单,输入挑战的次数,排除非法输入。

void cai()实现猜数字功能函数

输入一个五位数,排除非法输入,当玩家没有猜对时,用不同颜色的文字显示数字猜对了且位置也正确的数字个数和数字猜对了但位置不正确的数字个数。

当玩家猜对时,输出“恭喜你猜对了”,并询问玩家是否继续进行新游戏。此时玩家可以选择继续进行新游戏或退出游戏。

玩家可以在游戏进行过程中选择放弃继续猜数。玩家放弃继续猜数后,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经典字游戏:在3*3个方格的方阵中要入数字1到N(N>=10)内的某9个数字,每个方格一个整数,使得所有相邻两个方格内的两个整数之和为质数。试求出所有满足这个要求的各种数字法。 //我们可以通过改变N的值来求不同数字范围的质数数组,如果超出整型的范围,还需要改变数据类型。 //f[i]来记录数字i是否使用过, //T[i]用来记录下一个可以插在数字i后面的与其和为质数的数字在F[i][]中的位置。 //用F[i][j]来存储按数字从小到大的顺序得出的与数字i和为质数的第j个数字, //例如:F[1][2]存储的是与数字1的和为质数的第二个数字,我们可以通过查询数组F[][]的第一行找出第二个不为0 //值,然后将当前数组单元的列号存储到F[1][2]中,即F[1][2] = 4。 //算法思想是通过查询二维数组F[][],来确定下一个可以插入数组num[]的未使用过的数字,并记录该数字位于数组F[][]的位置, //以便回溯时寻找下一个符合要求的数字。如果不存在这样的未使用的数字,则需要回溯到上一个已插入num[]的数字, //寻找下一个可以插在该数字后面的未使用过的数字进行插入,如果所有的数字都已经插入到num[]中, //如是则打印结果。当所有数字都已插入num[]中,开始 //进行回溯,重复上述操作,寻找其他符合要求的序列。 //这里面有一个关键在于处理位于num数组右下角四个格子的数时,不光需要判断与前一个数i的关系,还需要判断其头顶上的元素之和是否为素数。 //程序中有一大段代码是处理i和j的。
很高兴回答您的问题,下面是关于使用C语言编写的打砖块游戏的说明: 1. 游戏简介 打砖块游戏是一款经典的街机游戏。玩家需要使用挡板将球反弹回去,打掉所有的砖块,以获得最高分数。本游戏使用C语言编写,可以在终端上运行。 2. 游戏规则 2.1 游戏开始 游戏开始时,玩家需要按下任意键开始游戏。 2.2 游戏操作 玩家使用键盘左右箭头控制挡板的移动,将球反弹回去。如果球没有被挡住,就会掉落,如果掉落到底部,游戏结束。 2.3 打砖块 玩家需要使用球撞击砖块,将砖块打掉。不同颜色的砖块有不同的分数。有些砖块还会掉落奖励,例如增加生命值、减慢球的速度等。 2.4 游戏结束 当所有砖块都被打掉,或者玩家的生命值降为0时,游戏结束。玩家可以输入自己的名字,将自己的得分保存到排行榜中。 3. 程序说明 本游戏使用C语言编写,运行在终端上。需要安装ncurses库,才能在终端上输出彩色字符。使用make命令编译运行。 游戏的主要逻辑在main.c中实现,包括初始化游戏、显示游戏界面、处理游戏事件、更新游戏状态等。 游戏界面使用ASCII字符画实现,包括挡板、球、砖块、分数、生命值等。使用了多线程技术,将球的移动和碰撞检测放在一个线程中,将用户输入和界面更新放在另一个线程中,以保证游戏的流畅性。 4. 程序下载 本游戏的源代码可以在以下链接中下载: [c语言打砖块游戏.doc](http://example.com/c语言打砖块游戏.doc) 希望以上信息能够帮助您了解使用C语言编写的打砖块游戏。如果您有任何疑问或需要进一步的帮助,请随时联系我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值