【记录贴】打字游戏-从零开始【高手的来指导】【小白来学习】
easyx吧
全部回复
仅看楼主
level 10
圣圣1992 楼主
一楼度娘
2012年11月22日 06点11分 1
level 10
圣圣1992 楼主
学了三年的C/C++,还有小半年的JAVA,到头来发现自己貌似除了解方程就不会别的了,所以打算总结一下以前学过的各种东西看能做出个什么东东,也希望高手们能帮忙补充一下,最好说的详细一些,让所有小白都能看懂,(俺也是小白,为小白服务),另外图形编程木有接触过,TC也没用过,昨天闲逛发现了个EASYX,感觉贴吧挺有爱,就在这儿混了, 以后如果代码转图形的话希望大神指导入个门哈,,小弟我就先拜师了
2012年11月22日 06点11分 2
level 10
圣圣1992 楼主
对了 忘记写俅俅,736670032,有不懂地方的白白们可以加了和我讨论,懂得多的高手看我的代码不爽的画也可以加了喷我,,小弟我都接着了,OK开始
2012年11月22日 06点11分 3
level 10
圣圣1992 楼主
版本:0.01BETA
============================
思路:
定义一维数组初始化键盘的各个按键;(ps:键盘一共26个小写26大写总计52个)
产生随机数随机数随机抽取数组中的某个;
最后就是和输入的数比对,然后增加计分神马的;
===========================
已知BUG
===========================
随机数貌似有点问题会抽到大写字母
Sleep()不明显
==========================
2012年11月22日 06点11分 4
level 10
圣圣1992 楼主
#include<iostream>
#include<graphics.h>
#include <conio.h>
#include<time.h>
#include<stdlib.h>
using namespace std;
void main()
{ //键盘初始化
char keyboard[52]={'q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M'};
char key;
int tm=1000;
int saoke=0;//分数
int random,random1;//存储随机数变量
srand((unsigned long)time(0));//生成种子
//random1=(rand()%52+1);//困难难度没写呢
cout<<"打字测试现在开始按space继续,请输入你看到的字符"<<endl;
if(getch())
{
for(;;)
{
random=(rand()%26+1);//简单难度
cout<<"请输入"<<keyboard[random]<<endl;
Sleep(tm);
key=getch();
if(key==keyboard[random])
{
cout<<"正确加分"<<"你目前分数是"<<saoke<<endl;
saoke=saoke+1;
tm=tm-10;
}
else
{ saoke=saoke-2;
cout<<"错误减分"<<"还剩"<<saoke<<endl;
}
if(saoke<0)
{
cout<<"杨子华是个大笨蛋";
break;
}
}
}
}
2012年11月22日 06点11分 5
level 10
圣圣1992 楼主
以上是代码部分,抽到大写的想明白了把random=(rand()%26+1);//简单难度
改成26就行了,原因:数组是从a[0]-a[51]
2012年11月22日 06点11分 6
level 10
圣圣1992 楼主
版本0.002BETA
==================
想法:
在上面基础上时间排版
可以显示键盘部分并刷新下面部分
计数器固定一个位置刷新
键盘部分具体
┌—┐
│ q│
└—┘
2012年11月22日 06点11分 7
level 10
圣圣1992 楼主
求大神具体实现方法
2012年11月22日 06点11分 8
level 12
的确有 bug。不过自己能实现这个程序很不容易,加个精华鼓励一下!
easyx 官网有一个打字母游戏,是图形版的,可以参考一下,然后进一步完善自己的程序。
2012年11月23日 07点11分 9
图形化的感觉有点不懂 - - 前几天想试着用点来画个圆形,居然不会画 - - 悲剧了,,数学不好的下场
2012年11月24日 04点11分
level 10
圣圣1992 楼主
新问题求助: 例如我要定义一个函数a(),在其它函数里调用内个函数的变量的值,具体应该怎么做?
2012年11月24日 08点11分 10
方法很多。例如,将这些变量定义为全局的,或者作为返回值返回。
2012年11月24日 13点11分
返回值只能反回一个值啊? 例如 void a() {int a=1; int b=7; int c; c=a+b; 我只能 return c或者是a或b吧? 不可能return a,b,c吧}
2012年11月24日 15点11分
回复 圣圣1992 : 可以将多个变量定义为一个结构体返回。或者可以通过指针参数或引用参数返回多个变量。
2012年11月25日 15点11分
level 10
圣圣1992 楼主
具体函数 ,写到一半不知道该怎么调用里面的值,我想用另一个函数调用此函数里的X,Y,的值,不知道该怎么调用,
思路是用这个函数里具体随机的XY,坐标确定KEYBOARD的值并且加亮此项,问题是没有办法再用了
===============
//初始化键盘
void DrawKeyboard()
{ int random=0;
int i=0;
int x;
int y; setcolor(RED);
srand((unsigned long)time(0));//生成种子
char keyboard[52]={'q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M'};
for(x=0;x<7;x++)
{
for(y=0;y<8;y++)
{
outtextxy(x*50,y*50,keyboard[i]);
i++;
if(i>51)break;
// random=(rand()%51);
}
} }
2012年11月24日 08点11分 11
没看懂你想做什么。用简单的代码描述你的问题吧。
2012年11月24日 13点11分
回复 yangw80 : void a(); { for(x=0;x<7;x++) { for(y=0;y<8;y++) { } } } void b() {} 简单说就这样, 我想在b()里调用a()的x,y,获得他们的值或者直接操作他们
2012年11月24日 15点11分
回复 圣圣1992 : 已经在 10 楼回复这个问题。
2012年11月25日 15点11分
level 9
为什么要定义字符数组呢?直接
char c=97+rand()%26;
outextxy(x,y,c);
不就行了?
2012年11月24日 12点11分 12
这个是无序的,如果像弄有序的就需要数组了吧? 或者char c=97;c++?? 问题是以后打算慢慢做成贴图样式的和内个做比较啥的~~
2012年11月24日 15点11分
我的意思是在有序的字母排列上通过排列时xy的坐标来确定此时字母的值并高亮显示,xy的值是随意的,这样就能做成类斯小时候玩的打字游戏那样,键盘上出现各个键位的提示啥的
2012年11月24日 15点11分
回复 圣圣1992 : 可以换一个设计。这里回复不能用多行,我待会儿发到 13 楼。
2012年11月25日 15点11分
level 12
回复 12 楼 圣圣1992 :
我看懂你的要求了。
可以换一个设计。比如,定义一个结构体:
struct KEY
{
char c;
int x;
int y;
};
然后初始化一个 KEY 数组,表示每一个键(可以从配置文件读取)。然后随机选择一个数组元素。
2012年11月25日 15点11分 13
恩 懂了 ,最近正在弄~~ 先把今天成果贴上来
2012年11月26日 06点11分
level 10
圣圣1992 楼主
上传最新效果图
未处理问题:
1.字母按顺序排列出来的,下部增加二维数组key[3][10] 并初始化即可
2.打字游戏算法还木有往进写
3.捕获按键并高亮显示
2012年11月26日 06点11分 14
level 10
圣圣1992 楼主
0.002BETA
================
思路:由于本人看不懂EASY里绘制矩形的bar(PS:主要是没法变颜色)只好loadimage()
控制方块移动主要是通过设置坐标原点来实现既第一张图片以物理(0.0)为坐标第二个就是
(70.0)依次类推,{ps:相对此时逻辑坐标都是(0,0)}
于是第一行 第二行 第三行 就都出来了
并且同时在图片中间依次添加字母(上面说的逻辑坐标都是0,0所以32,32既为相对靠近中间坐标)
2012年11月26日 06点11分 15
bar可以变颜色,setfillstyle函数定义说可以变bar的颜色,不过我发现还是白色。。然后看了别人的视频,发现他用的是setfillcolor函数,然后就可以变色了!
2018年09月19日 12点09分
level 10
圣圣1992 楼主
代码部分
=================
//字体:Comic Sans MS
//图片//打字//key.bmp
// 编译环境:Visual C++ 6.0,EasyX 2011惊蛰版
//Powerd by 圣圣1992
// http://www.easyx.cn
//
#include <graphics.h>
#include <time.h>
#include <conio.h> class Keyboard
{
public:
void OneKey();//一个键
void keyboard();
char key;
}k; void Keyboard::OneKey()
{
loadimage(NULL, "D:\\Key.bmp");//导入键盘文件
} void Keyboard::keyboard()
{
int a=0;
int b;
key=97;
setbkmode(TRANSPARENT);//设置背景透明
setfont(24, 0,"Comic Sans MS");//字体 for(b=a;;)
{
setorigin(b,0);//通过此项控制原点物理坐标
b+=70;
k.OneKey();//导入一个键贴图
outtextxy(32, 32, key);//此处控制逻辑坐标
key+=1;
if(b>=700)break;
}//控制原点坐标画一行键盘
//以下依次类推
for(b=a;;)
{
setorigin(b+20,70);
b+=70;
k.OneKey();
outtextxy(32, 32, key);
key+=1;
if(b>=630)break;
} for(b=a;;)
{
setorigin(b+40,140);
b+=70;
k.OneKey();
outtextxy(32, 32, key);
key+=1;
if(b>=490)break;
}
} void main()
{ initgraph(800,210); // 绘图环境初始化
k.keyboard();
getch(); // 按任意键退出
closegraph(); }
2012年11月26日 06点11分 16
level 10
圣圣1992 楼主
ps:key贴图大小 64*64各位自己做 放到D:根目录 命名Key.bmp
2012年11月26日 07点11分 17
请问怎么做啊?有没有具体代码?谢楼主~
2016年11月11日 09点11分
level 12
bar 的用法很简单,设置颜色需要通过 setfillstyle 设置填充颜色,这个填充颜色会影响所有的填充图案。
2012年11月26日 14点11分 18
以为setcolor就可以了,,,我说怎么不变颜色呢~~
2012年11月27日 04点11分
回复 圣圣1992 : setcolor 用来设置线条和文字的颜色。
2012年11月27日 04点11分
1