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++知识库]C/C++——关键字练习编程

运行界面如图:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

代码如下:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#include<graphics.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")

const int WIDTH = 640;/*界面宽度*/
const int HEIGHT = 500;/*界面高度*/
int right = 0;/*正确个数*/
int error = 0;/*错误个数*/
IMAGE picture;
/*下坠文字的结构体*/
struct TARGET
{
	int x;
	int y;
	char* str;
}words[3];
/*用户输入的值*/
struct USRKEY
{
	int x;
	int y;
	char str[20];
}userkey = {320,500-30,""};//用户指定位置输入
/*指定位置输出整数*/
void outtextxy_int(int x, int y,const char* format, int num)
{
	char str[20] = "";
	sprintf(str, format, num);
	outtextxy(x, y, str);
	
}
/*指定位置输出浮点数*/
void outtextxy_double(int x, int y, const char* format, double num)
{
	char str[20] = "";
	sprintf(str, format, num);
	outtextxy(x, y, str);
}
/*绘制界线*/
void divWindow()
{
	line(WIDTH - 100, 0, WIDTH - 100, HEIGHT - 40);
	line(0, HEIGHT - 40, WIDTH + 50, HEIGHT - 40);
	line(WIDTH - 100, 130, WIDTH + 50, 130);
}
/*初始化随机性关键字*/
void initTarget(struct TARGET *words, int n)
{
	static char str[32][10] = 
	{
		"auto", "break", "case", "char", "const", "continue","default",
		"do", "double", "else", "enum", "extern","float", "for", "goto",
		"if", "int", "long","register", "return", "short", "signed", "sizeof",
		"static","struct", "switch","typedef","union", "unsigned", "void",
		"volatile", "while" 
	};

	words[n].str = str[rand() % 32];
	/*字符串时重新初始化*/
	while (words[n].str == words[(n + 1) % 3].str || words[n].str == words[(n + 2) % 3].str)
	{
		words[n].str = str[rand() % 32];
	}
	words[n].x = rand() % (WIDTH - 200);
	words[n].y = -20;
}
/*绘制菜单栏*/
void drawMenu()
{
	settextcolor(LIGHTBLUE);
	settextstyle(20, 0, "隶书");

	outtextxy(WIDTH - 90, 25, "关键字练习");
	outtextxy(WIDTH - 90, 50, "程序员专属");
	outtextxy(WIDTH - 90, 75, "练习游戏");
	outtextxy(WIDTH - 90, 225, "正确数");
	outtextxy_int(WIDTH - 90, 250, "%d",right);

	outtextxy(WIDTH - 90, 285, "错误数");
	outtextxy_int(WIDTH - 90, 310, "%d", error);
	
	outtextxy(WIDTH - 90, 345, "正确率");
	//除数不为0 分类讨论
	if (right + error == 0)
	{
		outtextxy_double(WIDTH - 90, 370, "%.2lf%%", 0.00);
	}
	else
	{
		double sum = right + error;
		outtextxy_double(WIDTH - 90, 370, "%.2lf%%", right/sum*100);
	}
}
/*字符串处理*/
void strDispose()
{
	//碰线 处理
	for (int n = 0; n < 3; n++)
	{
		words[n].y += 5;
		if (words[n].y > (HEIGHT - 40 - textheight(words[n].str)))
		{
			initTarget(words, n);
		}
	}
	//打印字符串
	for (int n = 0; n < 3; n++)
	{
		settextcolor(RGB(75, 213, 213));
		outtextxy(words[n].x, words[n].y, words[n].str);
	}
}
/*装载资源*/
void loadResourse()
{
	srand(time(NULL));//播种种子
	initgraph(WIDTH + 50, HEIGHT);//初始化图形
	loadimage(&picture, "1.jpg", 690, 500);//装载背景图
	setbkmode(TRANSPARENT);//设置图案背景色透明
	mciSendString("open 1.mp3", 0, 0, 0);//打开音乐
	mciSendString("play 1.mp3 repeat",0,0,0);
	/*初始 随机 字符串*/
	for (int n = 0; n < 3; n++)
	{
		initTarget(words, n);
		words[n].y = -15 - n * 30;
	}
}
int main()
{
	int i = 0;
	loadResourse();//装载资源
	BeginBatchDraw();
	while (1)
	{
		cleardevice();
		putimage(0, 0, &picture);
		divWindow();//绘制界线	
		drawMenu();//绘制菜单栏
		strDispose();//字符串处理

		/*用户输入*/
		if (_kbhit())
		{
			char target;
			if ((target = _getch()) != '\r')
			{
				userkey.str[i++] = target;
			}
			else
			{
				int flagError = 0;
				for (i = 0; i < 3; i++)
				{
					if (strcmp(userkey.str, words[i].str) == 0)
					{
						initTarget(words, i);
						right++;
						flagError = 1;
					}
				}
				if (flagError == 0)
				{
					error++;
				}
				i = 0;
				userkey.x = 320;
				memset(userkey.str, 0, 20);
			}	
		}
		outtextxy(userkey.x, userkey.y, userkey.str);

		FlushBatchDraw();
		Sleep(50);
	}
	getchar();
	closegraph();
	return 0;
}

源代码资源链接:https://pan.baidu.com/s/1VaR1rzgxbq56mIjOHC9DeQ
提取码:z4wc

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 14:21:50  更:2021-07-10 14:24:19 
 
开发: 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年5日历 -2024/5/4 14:41:29-

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