easyX打字游戏

本文介绍了作者作为C语言初学者,使用easyX库制作的一款简单打字游戏。游戏包含字母和单词两种模式,支持退格操作。文章详细讲解了程序的设计思想、流程图以及重点子程序,包括随机生成字母和字符串的方法,以及字符下落的实现。同时,作者分享了在编译过程中遇到的两个错误及其解决办法。
摘要由CSDN通过智能技术生成

C语言小白用easyX实现的一个简单的打字游戏
不要在意名字,这是学习中调侃一下室友,劳役结合。
如果没有图片,由于字体和背景颜色设置的问题,难度一和难度二估计看不到什么。
难度三正常。图片可以根据代码自己弄一下,或者问我要也行。

easyX实现的一个简单的打字游戏

学习easyx时随便写的一个小项目,单词模式可接受退格,分享出来和大家一起研究学习。
图片就几张背景图和一张掩码图,可以自己找。

在这里插入图片描述

图片展示

在这里插入图片描述

程序整体设计思想

游戏开始后,鼠标选择对应难度,单机开始游戏,字母模式时,输入对应字母,字母直接消除,单词模式时,可以接受退格,按回车确定输入,输入的单词正确时单词消除。 要有加速减速及速度复位,显示分数和正确率等功能。

程序整体设计流程图

在这里插入图片描述

重点子程序分析

  1. 随机产生字母和字符串
    利用时间做种子,对26进行求余,再加上65 ,就是字母的ASCLL码
    字符串就是自己创一个字符串数组,然后用rand对其总数求余,利用下标对应字母。
    2.字符的下落
    利用easyx的输出机制,改变字符的Y坐标,使其慢慢增加,视觉上达到字符降落的效果

编译遇到的两个报错:

  1. 没有与参数列表匹配的重在函数实例的错误,错误代码E0304

错误原因
是因为字符串的实际存储有多种编码格式,如果默认的编码格式和实际执行的平台不相符就会发生错误。
解决方案
以VS2019为例,只需右键项目>属性>配置属性>高级,把高级属性中的字符集改为使用多字节字符集

  1. - 编译出现 类似 const char 类型的实参void NoiseSuppressionX32(char,cha,int,int)无法将参数1从const
    char[22]转换为char
    的问题

在项目属性->C/C+±>语言中的符合模式项选择否即可,就是这样的编译环境问题

源代码及注释如下:

头文件:

#include<graphics.h>
#include<mmsystem.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#pragma comment(lib,"winmm.lib")
#define MAXSTAR 1000	//星星个数

//窗口宽高
const int WIDTH = 750;
const int HEIGHT = 600;


struct STAR
{
	double x;
	int y;
	double step;
	int color;
};
STAR star[MAXSTAR];

//正确率和错误率
int right = 0;
int error = 0;

//下坠字符串的结构体
struct TARGET
{
	int x;
	int y;  //坐标
	char* str;  //保存字符串
};

//保存用户输入的字符串的结构体
struct USERKEY
{
	int x;
	int y;  //坐标
	char str[20];  //保存字符串

}userkey = { 320,HEIGHT - 30,"" };

//下坠字母的结构体
typedef struct  node
{
	int x;
	int y;
	int s;
}letter;


void  outtextxy_int(int x, int y, char* format, int num);
void outtextxy_double(int x, int y, char* format, double num);
void divWindow();
void drawScore();

void MYmusic();//音乐
void welcome();// 欢迎界面
void bkpicture();//背景图 
void bkpicture2();
void bkpicture3();
void goodbye();// 退出界面
void ifget();// 实现闪烁的“按任意键继续”  可以 用作暂停

void divWindow2();//game2 窗口
void InitGame2Target(letter FangAn[], int n);//game2 初始化字符
void illustrate();
void mygame1();
void mygame2();
void mygame3();

main.cpp

#include"head.h"


void InitStar(int i)// 移动星星
{
	star[i].x = 0;
	star[i].y = rand() % 810;
	star[i].step = (ran
  • 16
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值