李成笔记网

专注域名、站长SEO知识分享与实战技巧

C语言打造——打字练习系统 c语言打字游戏的思路

相信各位应该有了解过金山打字通吧,今天的话,小编就暂且写一个金山打字通这个系列的,打字系统,用C语言写一下,涉及到的知识点也并不是很多的,涉及到的 文件操作 字符数组 字符串函数 C语言基本语法 图形界面,下面小编把代码发出来一下

/*****************************************

1、程序,发给女朋友,同学,用不了。

2、脱离控制台,带界面的好看,C语言。

3、编写程序的逻辑。

******************************************/

#include <stdio.h> //标准的输入输出头文件

#include <graphics.h> //图形界面头文件

#include "resource.h"

#include <conio.h>

#include <string.h>

#include <time.h>

#include <stdlib.h>

#include <mmsystem.h> //多媒体设备接口

#pragma comment(lib,"winmm.lib")

IMAGE backImg; //一种类型 保存图片的类型

void Inter();

void Convention();

void loadArtcle();

void Typing(char content[6000]);

int main()

{

int flag = 1;

//初始化一个图形界面,参数1:界面的宽 参数2:界面的高

initgraph(1000,800); //printf(); scanf(); 像素

srand((unsigned int)time(NULL));

//PlaySound((LPCWSTR)IDR_WAVE1,NULL,SND_RESOURCE|SND_LOOP|SND_ASYNC);

//加载图片

//loadimage(存放图片的变量,图片的路径,图片拉伸的宽,图片拉伸的高);

//loadimage(&backImg, L"./image/背景.jpg", 1000, 800);

////输出图片

//putimage(0, 0, &backImg);

loadimage(&backImg, L"IMAGE", MAKEINTRESOURCE(IDR_IMAGE1), 1000, 800);

MOUSEMSG msg = { 0 }; //鼠标信息

while (1)

{

msg = GetMouseMsg(); //不断获取鼠标信息

if (msg.x >= 350 && msg.x <= 630 && msg.y >= 250 && msg.y <= 290)

{

settextcolor(BLUE);

outtextxy(350, 250, L"◆ 游 戏 模 式 ◆"); //

}

else if (msg.x >= 350 && msg.x <= 630 && msg.y >= 350 && msg.y <= 390)

{

settextcolor(BLUE);

outtextxy(350, 350, L"◆ 常 规 模 式 ◆"); //

}

else if (msg.x >= 350 && msg.x <= 630 && msg.y >= 450 && msg.y <= 490)

{

settextcolor(BLUE);

outtextxy(350, 450, L"◆ 音 乐 开 关 ◆"); //

}

else if (msg.x >= 350 && msg.x <= 630 && msg.y >= 550 && msg.y <= 590)

{

settextcolor(BLUE);

outtextxy(350, 550, L"◆ 退 出 系 统 ◆");

} //学习C语言 C++的过程中 很难坚持 枯燥 找到一种兴趣 练习提高的学习过程。

else

{

Inter(); //会有闪烁 需要用到缓冲

}

switch (msg.uMsg)

{

case WM_LBUTTONDOWN:

if (msg.x >= 350 && msg.x <= 630 && msg.y >= 250 && msg.y <= 290)

{

}

else if (msg.x >= 350 && msg.x <= 630 && msg.y >= 350 && msg.y <= 390)

{

Convention(); //常规

}

else if (msg.x >= 350 && msg.x <= 630 && msg.y >= 450 && msg.y <= 490)

{

flag = -flag;

if (flag == -1)

PlaySound(NULL, NULL, NULL);

else

PlaySound((LPCWSTR)(rand()%2+102), NULL, SND_RESOURCE | SND_LOOP | SND_ASYNC);

}

else if (msg.x >= 350 && msg.x <= 630 && msg.y >= 550 && msg.y <= 590)

{

//退出

closegraph();

exit(0);

}

break;

}

}

closegraph(); //关闭图形界面

return 0;

}

void Inter()

{

//文字

//1、设置背景模式(透明) 2、设置文字的颜色 3、文字的格式

setbkmode(TRANSPARENT); //透明

settextcolor(RGB(239, 39, 228)); //黑色

BeginBatchDraw();

putimage(0, 0, &backImg);

settextstyle(70, 0, L"华文琥珀");

outtextxy(240, 80, L"极品打字练习系统"); //在指定的坐标输出文字

settextstyle(40, 0, L"华文琥珀");

outtextxy(350, 250, L"◆ 游 戏 模 式 ◆"); //

outtextxy(350, 350, L"◆ 常 规 模 式 ◆"); //

outtextxy(350, 450, L"◆ 音 乐 开 关 ◆"); //

outtextxy(350, 550, L"◆ 退 出 系 统 ◆"); //

EndBatchDraw();

}

void Convention()

{

setlinecolor(RED);

setlinestyle(PS_SOLID, 3);

setbkcolor(RGB(79,135,230));

cleardevice();

rectangle(50, 50, 950, 100);

for (int i = 200; i < 800; i += 100)

{

rectangle(50, 50, 950, i); //50,50

}

loadArtcle();

getch();

}

//

void loadArtcle()

{

settextcolor(YELLOW);

settextstyle(20, 0, L"Segoe UI Historic");

setlinestyle(PS_SOLID, 1);

FILE* fp;

if ((fp = fopen("./type.txt", "r")) == NULL)

return;

char content[6000]; //6000个字符

int readlen;//实际的字符个数

fgets(content, 6000, fp);

long len1 = strlen(content); //len1 实际

int j = 0;

int y = 130;

for (int x = 60; x <= 940 && j<=len1; x += 8, j++)

{

outtextxy(x, y, content[j]);

if (j != 0 && j % 108 == 0)

{

x = 60;

y += 100;

}

if (y >= 900)

break;

}

readlen = j;

Typing(content);

}

//getch() 显示到屏幕上 判断一下跟数组一样吗 一样 黄色 不一样红色 黄色个数 总个数 正确率

void Typing(char content[6000])

{

settextstyle(20, 0, L"Segoe UI Historic");

int x = 60;

int y = 170;

char ch;

int i=0;

while (1)

{

ch = getch();

if (ch == content[i])

{

setcolor(YELLOW);

}

else

{

setcolor(RED);

}

if (ch == '\b') // \b

{

if (i > 0) //数组的下标

{

i--;

}

if (x > 60)

{

x -= 8;

}

outtextxy(x, y, L" ");

}

else

{

outtextxy(x, y, ch);

x += 8;

i++;

}

}

}

下面的话我把效果图发出来一下,可以加下群466572167(群内有各种项目学习资料)

基于时间有限,还有就是代码太多,小编暂时也没有特别的完善,那个游戏模式暂时还没写出来,只是先把常规模式写了一下,效果图也发了出来哈,可以加下小编的群466572167,群内有学习资料以及项目资源,可以一起交流提升。希望对接触了C语言的,还没尝试写过小程序的,能给一下思路,能帮助就尽量帮一下,还有这都是小编的见解哈,不喜勿喷哈,有建议可以在下面评论的。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言