问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言编写一个单词接龙的小游戏

发布网友 发布时间:2022-05-16 05:55

我来回答

3个回答

热心网友 时间:2023-10-13 02:26

//囧,代码写好回来一看居然已经有推荐答案了.....

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#define MAX 80
char buff[MAX+1];
char first[4];
char last;
bool spellCheck()
{
int p = 0;
while(buff[p] != 0)
{
if(buff[p] > 'z'||buff[p] < 'a')
return false;
p++;
}
return true;
}
bool syntaxCheck()
{
int len = strlen(first);
if(len == 3)
{
if(strncmp(first,buff,3) == 0)
return true;
else if(strncmp(&first[1],buff,2) == 0)
return true;
else if(strncmp(&first[2],buff,1) == 0)
return true;
}
else if(len == 2)
{
if(strncmp(&first[0],buff,2) == 0)
return true;
else if(strncmp(&first[1],buff,1) == 0)
return true;
}
else if(len == 1)
{
if(strncmp(&first[0],buff,1) == 0)
return true;
}

return false;
}
void getWord()
{
do
{
printf("请输入一个全小写的单词,和%s匹配\n",first);
scanf("%s",buff);
if(!spellCheck())
{
printf("拼写错误,请输入一个全小写的单词......\n");
continue;
}
if(strlen(buff) == 0)
{
printf("请输入一个单词......\n");
continue;
}
return;
}while(true);
}
void start()
{
FILE *fp = fopen("D:\\1.txt","w");//<--------这里改输出文件的路径
int len;
first[0] = rand()%26+'a';
first[1] = 0;
last = rand()%26+'a';
printf("a1:%c a2:%c\n",first[0],last);
while(true)
{
getWord();
if(!syntaxCheck())
{
printf("输入的单词不符合要求,请重新输入......\n");
continue;
}
else
{
fprintf(fp,"%s\n",buff);
len = strlen(buff);
if(buff[len-1] == last)
{
printf("%s末尾和a2:%c匹配,所以游戏结束\n",buff,last);
break;
}
else
{
if(len >= 3)
strcpy(first,&buff[len-3]);
else
strcpy(first,buff);
printf("匹配成功,请继续输入......\n");
}
}
}
fclose(fp);
}
int main()
{
srand(GetTickCount());
start();
system("pause");
}追问程序还是很不错的,但是为了能够对单词(或词组)的正确性做出判断,程序需要维护一本英文单词词典。判断单词(或词组)的正确性,就是在该词典中查找相应的单词(或词组),找到则正确,找不到则错误。另外,为保证游戏过程中玩家输入的单词(或词组)有较高的有效性,还应注意英文单词词典的含词量要足够大。而且请给程序加些注释,本人菜鸟,不怎么看得懂,谢谢了。

热心网友 时间:2023-10-13 02:27

随机字母的产生:
首先,创建一个字符串包含26个字母;
然后,做一个随机函数,让它的返回值在0~25之间;
最后,用这个随机函数生成的数值,作为从第一步创建的字符串中挑出一个字母的序号;第二字母类似.

校验玩家的输入:
首先,判断玩家输入的第一个字母是否为前面的最后一个字母;
然后,判断这个单词或词组的最后一个字母是否与系统产生的第二个字母相同,如果相同游戏结束,不同游戏继续;
其中,在游戏过程中,利用文件操作进行数据的存储,建议用附加的写方式操作文件.
基本原理就是这些,如果需要,可以进一步讨论.Hi就可以

热心网友 时间:2023-10-13 02:27

没看懂你表的意思,但是感觉不难
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
教材电子版去哪里找 九阳豆浆机打不放网罩能打干豆吗 深圳和记中转场干什么用 腹部增强CT查什么 腹部ct增强检查是什么 腹部加强ct检查出什么 设置好的电脑壁纸老爱自己变我的电脑为什么在老是自动换桌面壁纸 蛇能极速爬行靠什么 武昌理工学院宿舍条件怎么样 河北省人港澳通行证怎样续签? notepad++使用去掉红线 notepad怎么设置字体颜色 请教Opera如何更新 UL的 标签支持HTML 中的全局属性。 notepad 怎么设置拼写检查 如何关闭火狐的拼写检查? HTML5 中,contextmenu 和 spellcheck 是: HTML 属性 HTML 元素 事件属性 样式属性,这四个选项什么区别 广药白云山精油 广州白云山汉方现代药业有限公司怎么样? 红酒高度 jquery判断滚动条距离底部距离并添加相应的class 把童年时的风景比喻成一张老照片,如何赏析 有关童年的图片 老挝可坐动车到中国哪些城市 老挝金三角经济特区距离中国哪个地方比较近? 想知道: 老挝与中国的哪个省最近,老挝首都 离中国赣州市的距离有多远 手指尖脱皮后开裂怎么办 手指开裂脱皮怎么办,如何处理? 手指有点脱皮还有开裂要怎么办 黑珍珠排行榜去哪里看 gb/t1804-92是什么标准 “公差尺寸的极限偏差按GB1804-79 JS14”是什么意思? GB/T1804-F级公差是什么 未注公差GB/T1804-92m级具体是多少 GB/T1804一c是什么? 作文我妈这个人800字明天就要交,急!!! 回忆鲁迅先生(节选)急,急,急,急,急!!!加分 昆仑账号密保资料怎么修改 部落冲突帐号如何与原先的手机号解绑? 部落冲突昆仑版怎么整密保,手机版的 如何解绑QQ密保手机? 请问湖南省娄底市第一工程有限公司怎么样? 全方位绩效考核法如何进行操作 湖南中星龙建设工程有限公司怎么样? 为什么用闪电开的电源,不能用钥匙关 - 信息提示 安尔达电动车不小心按下了闪电键怎么办? 可控硅可以控制直流吗?? 电动车用防盗遥控器(那个闪电按键)开启电源(没插钥匙),却无法关闭。 一个工程的设备不够,需要增加设备,谁有增加设备的合同和协议范例