IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c语言打字游戏——马字打 -> 正文阅读

[C++知识库]c语言打字游戏——马字打

注意

  1. 这是我大一时独立完成的纯C语言课程设计,不包含C++
  2. 代码简单且烂,但交作业够用。
  3. 单词应放置在文本文档内,命名为"1.txt"。
  4. 需要根据单词总数量更改随机数代码。
  5. 已注释掉全部测试用语句。
  6. 本文提供完整代码及注释。
  7. 如果有帮到你,希望你能再整点花活儿。
  8. 这匹马象征着我的一个同学。

需求

用C语言编程实现一个打字游戏,能够完成如下功能:

  1. 打字操作:要求系统包含至少30条信息(中英文都可),游戏开始可以随机选择一条或多条信息,随后按照根据显示的信息进行打字操作;
  2. 判断操作:判断输入字符是否正确;
  3. 成绩显示:给出分数并显示。

实现

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include<time.h>
extern void before_game(int,int,float);
extern void start_game(char*,int,int,int,float);
extern void creat_word(int);

void before_game(int x,int u,float y)
{
    int a;
    int *p;
    int i=0;
    FILE *fp;
    fp = fopen("1.txt","r");
    char s[40][128];
    p=s[0];//指针p指向二维数组s 
    for(a=0;a<40;a++)
    {
    	fscanf(fp,"%s",s[a]); //把句子存进数组
    //	printf("\n%s",s[a]);  //输出测试 
	}
	srand(time(NULL));//time(NULL)返回一个表示当前系统时间的整数使随机值函数的种子随时间变化 
	int j,k;
	int rad[40] ;
	/*for(j=0;j<10;j++)//测试 
	{
		printf("%d,",rand()%40);//测试取值范围 0-39
	}*/ 
	for(k=0;k<40;k++)//随机算法
	{
		rad[k]=rand()%40;//置入数组rad
		for(j=0;j<k;j++)
		{
			if(rad[j]==rad[k])//查重 
   			{
			   j=-1;rad[k]=rand()%40;//重新取值避免重复
			}
		}
	}
	char ch,sc[1000];
	int n;
	for(j=0;j<39;j++)
	{
		n=0;
		for(k=0;k<128;k++)
		{
			if(s[rad[j]][k]==NULL)//检查还有没有字 
			{
				break;//没有字就跳出循环 
			}
			else
			{
			//printf("%c",s[rad[j]][k]);//每列循环输出随机行数的字构成句子 
			ch=s[rad[j]][k];
			sc[i++]=ch;
			n++;
			}		
		}
		//n=sizeof(s[rad[j]]);
		sc[i]='\0';
		printf("%s\n",s[rad[j]]);
		//printf("\n");//每输出一句后换行 
		start_game(sc,n,x,u,y);
		
	}

/

 //   start_game(sc,n);
 
 
	} 
	
	
	//数组rad[]包括40个范围为0-39的不重复随机数 

/*	j=0;                          //测试
	for(j=0;j<40;j++)             //随机数输出测试
	{                             
		printf("%d\n",rad[j]);    //随机数输出测试
		printf("%s\n",s[rad[j]]); //随机句子输出测试 
	}      
                       
//	输出随机句子:printf("%s\n",s[rad[j]]) 
	


 
/*
void creat_word(int n)
{
	char ch,sc[1000];
    FILE *fp;
    int i=0;
    if((fp=fopen("1.txt","r"))==NULL){
        printf("Open the file failure...\n");
        exit(0);
    }
    while((ch=fgetc(fp))!=EOF)
        if(ch<0)
            sc[i++]=ch;
    fclose(fp);
    sc[i]='\0';
    
    printf("%s\n",s);//打出来看看
	start_game(s,n);

}                                                   */
/*
开始游戏
字符按下不能回退,打错用*替换
*/

void start_game(char* ch,int n,int x,int u,float y)
{
	time_t start_time = 0;
	time_t end_time = 0;
	while (1)
	{
		char str;
		int count = 0;
		int i;
		for (i = 0; i < n; i++)
		{
			str = _getch();
 
			if (str == ch[i])
			{
				count++;
				printf("%c", str);
			}
			else
			{
				printf("*");
			}
			if (i == 0)
				start_time = time(NULL);
			if (i == n-1)
				end_time = time(NULL);
 
		}
		u++;
		x=x+(end_time - start_time);
		y=((y+(count*1.0 / n * 100))/u);
		printf("\n");
		printf("  时间:%ds     准确率:%.2f%%\n",end_time - start_time,count*1.0 / n * 100);
		printf("总时间:%ds 平均准确率:%.2f%%\n",x,y);
		printf("按Esc退出,按任意键继续\n");
		str = _getch();
		if (str == 27)//Esc的ASCII为27 ,退出游戏
		{
			system("cls");
			if(y<60)
			{
				printf("	   			                                      \n");
				printf("                      @@\.        @@@\                     \n"); 
				printf("  果                  .@@@@       @@@@`                    \n"); 
				printf("                       =@@^      =@@@`    ,]]].            \n"); 
				printf("                      ]/@@\]/@@@@@@@@@@@@@@@@@@@           \n"); 
				printf("           ,\@@@@@@@@@@@@@/[[[  =@@^                       \n"); 
				printf("  断                   =@@^    ,@@^.]]`                    \n"); 
				printf("                       ,@@^    @@@@@@@@@`                  \n"); 
				printf("                     ]]]@@@@@@@@[[` .@@.                   \n"); 
				printf("               .@@@[[[`   ,@@@`     /@@@`                  \n"); 
				printf("  就               =@@\    ,@@@@   /@@@`                   \n"); 
				printf("                    =@@@\  /@@@`  /@@`                     \n"); 
				printf("                     \@@/  =@@@^,@@/                       \n"); 
				printf("                      [[   *@@@ ,]]]]/@@@@@@@@\`           \n"); 
				printf("  会       .@@@@@@@@@@@@@@@@@@@@@@[[[[[[.                  \n"); 
				printf("             ,[[[[.     /@@@@@@@@@`                        \n"); 
				printf("                     ./@@@/*@@@ ,@@@`                      \n"); 
				printf("                   ,@@@@`  *@@@   \@@@`                    \n"); 
				printf("  白            ,/@@@/     *@@@    .\@@@]                  \n"); 
				printf("             ,/@@@/        *@@@      ,@@@@@]`              \n"); 
				printf("          ]@@@@`           =@@@        =@@@@@@@@@@^        \n"); 
				printf("       =@@/[              .@@@@                            \n"); 
				printf("  给                       ,@@^                            \n"); 
				printf("                           ,@@^                            \n");                                    
			}
			else
			{
			}
			getchar();
			exit(NULL);
			
		}
		system("cls");
		before_game(x,u,y);//重新开始游戏
		break;
	}
}
int main(int argc, char *argv[])
{
	int x=0,u=0;
	float y=0;
	printf("                               _(|_/)                              \n");
	printf("                             ,((((^`|         ┃      ┃    ━━┳━ \n");
	printf("                            ((((  (6 |        ┃     ━╋      ┃   \n");
	printf("                          ,((((( ,    |       ┃      ┃      ┃   \n");
	printf("      ,,,_              ,/  |'._  ,`,         ┃      ┃      ┃   \n");
	printf("     ((((// ,...       ,((((   |    `-.-'     ┃     ╱┃      ┃   \n");
	printf("     )))  /'    `'''' |||||    |              ┃      ┃      ┃   \n");
	printf("    (((  /            (((      |              ┃     ┖┛     ━┛   \n");
	printf("     )) |                      |              ┃                   \n");
	printf("    ((  |        .       '     |              ┃                   \n");
	printf("    ))  |     _ '      `t   ,.')              ┃                   \n");
	printf("    (   |   y;- -,-'' '-.|   ||               ┃          、       \n"); 
	printf("    )   / ./  ) /         `|  |               ┃       ┎━━━━━┒ \n");
	printf("       |./   | |           / |'               ┃         ━━┓     \n");
	printf("       ||     ||          ||'|                ┃          ╱      \n");
	printf("       ||      ||       _||'||                ┃       ━━━╋━━━ \n");
	printf("       ||       ||     |_|  ||                ┃          ┃       \n");
	printf("       |_|     |_|          ||                ┃          ┛       \n");
	printf("       `''                  |_|                                    \n");
	printf("                            '''                                    \n");
	printf("\n                             马哥打字游戏:马字打\n"); 
	printf("输入过程中无法退出 输入出错则按*表示 按回车键开始测试 按下首字母开始计时\n");
	getchar();
	system("cls");
	before_game(x,u,y);
	return 0;
}

效果

  1. 启动程序,屏幕中出现了一匹马,它象征着我同学。
    在这里插入图片描述
  2. 按任意键开始,将随机出现一个单词。
  3. 输入过程中无法退出,输入出错则用*表示。
    在这里插入图片描述
  4. 得出时间和准确率。按任意键继续,出现下一个单词。输入总时间和综合成绩是累计的。
    在这里插入图片描述
  5. 如果综合成绩很低,则会输出一个大大的菜字。
    在这里插入图片描述
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 11:53:50  更:2021-07-26 11:55:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/20 0:23:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码