-
游戏特色
- 有三种难度等级可供选择,分别挖空1、2、3个单词位置。
- 内置有10个单词,猜词时会随机抽取一个单词,并随机决定挖空哪个位置,使游戏更具趣味性。
- 用户可以自己添加想猜的单词(10个以内均可)。
- 用户猜错后会给出正确答案
-
解题思路
-
要显示单词,而且要用户在指定位置输入字母,故应用到一个函数,可以将光标定位到单词被挖空的位置等待用户输入。我构建了一个gotoxy()函数,是基于网上找到得一个源代码稍加修改而得到的。调用时只需将坐标传递给gotoxy()即可将光标跳到指定坐标。
在输入字母、打印吊死鬼图案时,将多次用到定位光标的函数。
- 由于游戏可能进行多次,所以清屏函数system("CLS")的使用时非常必要的。可将上一次游戏进行的内容全部清空重新开始新一轮游戏。
- 为了增加趣味性,游戏允许用户自己添加单词用于猜词。
故我构建了一个函数,先把原先存储单词的字符串数组元素全部赋值为'/0',防止用户输入的单词没有原先字符串中以存储的单词长而导致猜词时输出的单词不伦不类(合成词?~_~)。
然后设置循环,依次给10个字符串数组赋值,并通过string.h下的strlen()函数判断,如果输入单词过短则提示用户重新输入,如果只按回车键,那么将跳出函数,返回主函数开始猜词。
- 由于设置了3个难度,故每个难度都构建了一个函数,这三个函数算法基本类同。
以难度2为例:首先生成一个0~9的随机数,并通过switch()函数,根据生成的随机数判断本次游戏要猜的单词(w0~w9),并用一个指针指向该单词;
第二步是将存有该单词的字符串数组复制给另一个数组,用于猜词;
第三步,产生两个随机数并确保它们不相等,随机数最大为单词的长度,这两个随机数将决定单词被挖空的字母位置,即将数组相应位置的元素赋值为下划线;
下一步则要输出绞刑架图案和已被挖空两个字母的单词,并将光标定位在第一个空位上;
待用户输入一个字母后,判断该字符是否与正确字符相等(这就是将字符串数组复制的原因) 若相同,则跳到下一出空位继续等待输入,若不相同,则提示错误,并在绞刑架图案上一次输出头、躯干、胳膊等等。
当用户全部输入正确(输错次数在7次以内)时,恭喜玩家成功猜出单词,并邀请玩家再玩一次。
当输错7次(用循环计数器实现)后,提示玩家失败,并将正确答案提示玩家,邀请玩家再玩一次。
-
-
源代码(C语言)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include <windows.h>
#define MAX 17 //最长单词的长度
int gotoxy(int,int);
int level1();
int level2();
int level3();
int addnew();
char w0[]="christian";
char w1[]="programming";
char w2[]="network";
char w3[]="project";
char w4[]="environment";
char w5[]="freedom";
char w6[]="protection";
char w7[]="firewall";
char w8[]="paradise";
char w9[]="carrot";
int main()
{
char difflv;
printf("Difficulty Level(1~3, 0 to Quit, 4 to Add New Words): ");
while((difflv=getchar()) !='0')
{
switch(difflv)
{
case '1':system("CLS");level1();break;
case '2':system("CLS");level2();break;
case '3':system("CLS");level3();break;
case '4':addnew();fflush(stdin);
printf("Difficulty Level(1~3, 0 to Quit, 4 to Add New Words): ");
continue;
default:
printf("Wrong Input!/n");
printf("Difficulty Level(1~3, 0 to Quit, 4 to Add New Words): ");
fflush(stdin);
continue;
} //switch OVER
gotoxy(11,0); //转到第11行
printf("Difficulty Level(1~3, 0 to Quit, 4 to Add New Words): ");
fflush(stdin);
} //while OVER
return 0;
} //main OVER
//============================================================================================
int gotoxy(int x,int y) //定位光标的位置 ,超级实用!
{
COORD coord;
coord.X=y; //位置调换,调用函数是第一个参数是行,第二个参数是列
coord.Y=x;
SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
return 0;
}
//===============================================================================================
int addnew()
{
char j,i;//计数器
char word[MAX]="a";
fflush(stdin);
printf("Please Input New Words(Press ENTER to return):/n");
for(j=0;j<10 && strlen(word)!=0;j++)
{
gets(word);
if(strlen(word)==0)return 0;
吊死鬼游戏Hangman游戏的C语言实现代码
最新推荐文章于 2024-08-30 17:19:25 发布
本文介绍了一个使用C语言实现的Hangman游戏,包括三种不同难度等级,每级随机选择内置单词或用户自定义单词。游戏过程中,用户可以输入字母猜测单词,根据错误次数展示吊死鬼图案。文章还提供了源代码,详细解释了游戏的实现思路和关键函数,如清屏、定位光标、输入检查等。
摘要由CSDN通过智能技术生成