qt打字小游戏
在百度上看到的一个贪吃蛇游戏
includelt;iostream.h;
includelt;windows.h;
includelt;time.h;
includelt;stdlib.h;
includelt;conio.h;
define N 21
void gotoxy(int x,int y)//位置函数
{
COORD pos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)
{
int i,j;//初始化围墙
int wall[N+2][N+2]={{0}};
for(i=1;ilt;=N;i++)
{
for(j=1;jlt;=N;j++)
wall[i][j]=1;
}
color(11);
for(i=0;ilt;N+2;i++)
{
for(j=0;jlt;N+2;j++)
{
if(wall[i][j])
coutlt;lt;;■;;
else coutlt;lt;;□; ;
}
coutlt;lt;endl;
}
gotoxy(N+3,1);//显示信息
color(20);
coutlt;lt;;按 W S A D 移动方向;lt;lt;endl;
gotoxy(N+3,2);
color(20);
coutlt;lt;;按任意键暂停;lt;lt;endl;
gotoxy(N+3,3);
color(20);
coutlt;lt;;得分:;lt;lt;endl;
apple[0]=rand()%N+1;//苹果
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
coutlt;lt;;●;lt;lt;endl;
}
int main()
{
int i,j;
int** snake=NULL;
int apple[2];
int score=0;
int tail[2];
int len=3;
char ch=;p;;
srand((unsigned)time(NULL));
init(apple);
snake=(int**)realloc(snake,sizeof(int*)*len);
for(i=0;ilt;len;i++)
snake[i]=(int*)malloc(sizeof(int)*2);
for(i=0;ilt;len;i++)
{
snake[i][0]=N/2;
snake[i][1]=N/2+i;
gotoxy(snake[i][0],snake[i][1]);
color(14);
coutlt;lt;;★;lt;lt;endl;
}
while(1)//进入消息循环
{
tail[0]=snake[len-1][0];
tail[1]=snake[len-1][1];
gotoxy(tail[0],tail[1]);
color(11);
coutlt;lt;;■;lt;lt;endl;
for(i=len-1;i;0;i--)
{
snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
gotoxy(snake[i][0],snake[i][1]);
color(14);
coutlt;lt;;★;lt;lt;endl;
}
if(kbhit())
{
gotoxy(0,N+2);
ch=getche();
}
switch(ch)
{
case ;w;:snake[0][1]--;break;
case ;s;:snake[0][1]++;break;
case ;a;:snake[0][0]--;break;
case ;d;:snake[0][0]++;break;
default: break;
}
gotoxy(snake[0][0],snake[0][1]);
color(14);
coutlt;lt;;★;lt;lt;endl;
Sleep(abs(200-0.5*score));
if(snake[0][0]==apple[0]snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1
{
score++;
len++;
snake=(int**)realloc(snake,sizeof(int*)*len);
snake[len-1]=(int*)malloc(sizeof(int)*2);
apple[0]=rand()%N+1;
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
coutlt;lt;;●;lt;lt;endl;
gotoxy(N+5,3);
color(20);
coutlt;lt;scorelt;lt;endl;
}
if(snake[0][1]==0snake[0][1]==Nsnake[0][0]==0snake[0][0]==N)//撞到围墙后失败
{
gotoxy(N/2,N/2);
color(30);
coutlt;lt;;Game over;lt;lt;endl;
for(i=0;ilt;len;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);
}
}
return 0;
}
你好,下面这个站点的小游戏比较新,种类也比较多,要什么都有哦。http://www.h5uc.com/?=wd
1.打字训练游戏typeGame QDialog
1-1 字母 / 砖块 绘制
paintEvent() ---- update()
QPainter 类
资源清单: 26个字母 砖块 背景
数据处理:
struct _STCH
QString szPath
QPoint cPos
QSize 砖块大小
QPoint 桌上角第一块砖的位置
const int max_ch = 5
最多5个字母同时出现
1.绘制砖头 40*40
800/40 = 20 col
640/40 = 16 row
13 14 15
2.处理数据********
3.随机出现字母
字母图片和位置
4.捕获用户按键
KeyPressEvent
5.计分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
首先建一个文件叫typeGame 选择 基类 QDialog
名字设为dialog
1.dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QMessageBox>
// 声明它是一个外部变量
extern int gScore;
void Dialog::on_startBtn_clicked()
{
initImgList(); // 1.初始化图片路径
initPosList(); // 2.初始化图片位置
// initWallList(); // 3.初始化砖头列表
checkCrash(); // 4.检查字母是否撞倒砖头
// 3.定义控制字母下移的定时器
QTimer *pDownTimer = new QTimer;
connect(pDownTimer,SIGNAL(timeout()),
this,SLOT(updateMap()));
pDownTimer->start(1000);
// 4.定义产生字母的定时器
QTimer *pCharTimer = new QTimer;
connect(pCharTimer,SIGNAL(timeout()),
this,SLOT(createChar()));
pCharTimer->start(3000);
// 5.定义一个刷新显示分数的定时器
QTimer *pScoreTimer = new QTimer;
connect(pScoreTimer,SIGNAL(timeout()),
this,SLOT(updateScore()));
pScoreTimer->start(500);
// 6.定义一个刷新计时的定时器
QTimer *pTimeTimer = new QTimer;
connect(pTimeTimer,SIGNAL(timeout()),
this,SLOT(updateTime()));
pTimeTimer->start(1000);
}
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog),
m_iTime(60)
{
ui->setupUi(this);
initWallList();
checkCrash();
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::paintEvent(QPaintEvent * event)
{
QPainter p(this);
// 1.绘制背景
p.drawPixmap(0,0,800,640,QPixmap(":image/back.jpg"));
// 2.绘制砖头
for(int i = 0; i < m_WallList.size(); ++i)
{
int x = m_WallList.at(i).x();
int y = m_WallList.at(i).y();
p.drawPixmap(x,y,40,40,QPixmap(":image/wall.jpg"));
}
// 3.绘制随机产生的字母
for(int i = 0; i < m_CharList.size(); ++ i)
{
int x = m_CharList.at(i).x;
int y = m_CharList.at(i).y;
int iIndex = m_CharList.at(i).iIndex;
p.drawPixmap(x,y,40,40,QPixmap(m_ImgList.at(iIndex)));
}
}
// 按键事件
void Dialog::keyPressEvent(QKeyEvent * event)
{
m_key = event->key();
m_key += 32;
for(int i = 0; i < m_CharList.size(); ++ i)
if( m_key == m_CharList.at(i).value)
{
m_CharList.removeAt(i);
gScore += 10;
break;
}
update();
return ;
}
// 更新地图
void Dialog::updateMap()
{
// 1.改变字母的位置
for(int i = 0; i < m_CharList.size(); ++ i)
m_CharList[i].y += 40;
// 2.检查字母是否撞倒砖头
checkCrash();
// 3.重绘地图
update();
return ;
}
// 产生字母
void Dialog::createChar()
{
if( m_CharList.size() > 4)
return ;
STCHAR stChar;
stChar.iIndex = rand()%m_ImgList.size();
stChar.x = m_PosList.at(stChar.iIndex%20).x();
stChar.y = m_PosList.at(stChar.iIndex%20).y();
stChar.value = stChar.iIndex + 'a';
m_CharList.append(stChar);
return ;
}
// 1.初始化图片路径
void Dialog::initImgList()
{
for(char i = 'a'; i<='z'; ++i)
{
QString szPath = QString(":image/%1.jpg").arg(i);
m_ImgList.append(szPath);
}
return ;
}
// 2.初始化图片位置
void Dialog::initPosList()
{
for(int iCol = 0; iCol < 20; ++iCol)
m_PosList.append(QPoint(iCol*40,0));
return ;
}
// 3.初始化砖头列表
void Dialog::initWallList()
{
for(int iRow = 13; iRow < 16; ++ iRow)
for(int iCol = 0; iCol < 20; ++iCol)
m_WallList.append(QPoint(iCol*40,iRow*40));
return ;
}
// 4.检查字母是否撞倒砖头
void Dialog::checkCrash()
{
for(int i = 0; i < m_CharList.size(); ++i)
for(int j = 0; j < m_WallList.size(); ++j)
{
int x1 = m_CharList.at(i).x;
int y1 = m_CharList.at(i).y;
int x2 = m_WallList.at(j).x();
int y2 = m_WallList.at(j).y();
if ( x1 == x2 && y1 == y2)
{
m_CharList.removeAt(i);
m_WallList.removeAt(j);
gScore -=5;
return ;
}
}
}
// 5.定义一个刷新显示分数
void Dialog::updateScore()
{
ui->scoreLcd->display(gScore);
return ;
}
// 5.定义一个刷新显示时间
void Dialog::updateTime()
{
ui->timeLcd->display(m_iTime--);
if( m_iTime < 0 )
close();
return ;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
2.dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QPainter>
#include <QTimer>
#include <QKeyEvent>
// 字符信息结构体
typedef struct _STCHAR
{
int iIndex; // 字母索引值
int x; // 字母X坐标
int y; // 字母Y坐标
int value; // 字母值
}STCHAR;
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
void initImgList(); // 1.初始化图片路径
void initPosList(); // 2.初始化图片位置
void initWallList(); // 3.初始化砖头列表
void checkCrash(); // 4.检查字母是否撞倒砖头
protected:
void paintEvent(QPaintEvent * event); // 绘图事件
void keyPressEvent(QKeyEvent * event); // 按键事件
public slots:
void updateMap(); // 更新地图
void createChar(); // 创建字符
void updateScore(); // 更新分数
void updateTime(); // 更新时间
private slots:
void on_startBtn_clicked();
private:
Ui::Dialog *ui;
QList<QString> m_ImgList; // 字母图片路径
QList<QPoint> m_PosList; // 字母初始位置
QList<STCHAR> m_CharList; // 字符链表
QList<QPoint> m_WallList; // 砖头列表
int m_key; // 用户输入Key
int m_iTime; // 计时时间
int gScore = 0;
};
#endif // DIALOG_H
---------------------
作者:王木木界
来源:CSDN
原文:https://blog.csdn.net/sinat_24880087/article/details/52433687
版权声明:本文为博主原创文章,转载请附上博文链接!
金山打字
QQt怎么玩啊?
您好 我来回答您的问题 这么长时间来!穿泡可以说是QQT区别于PPT的最大亮点,可是现在很多人仍视穿泡为外挂,不跟穿泡的玩,更有大多数人不会穿泡。其实穿泡并不难,听我慢慢道来。穿泡总的方法和原则:1、前面一个泡泡,人物走过去贴住泡泡再放一个泡泡(中途按住方向键不松)就可以了。这是...
一个简单有趣的哲理性小游戏
也许你会说,不按撤销键,那不是明摆着往死路走么?即使打开了,基本上也是靠运气。那么回想一下,现在做什么事情,没有运气的成分在里面?运气也是实力的一部分。再者说,人生***不如意,何况一个小游戏?承认并认同已经成为事实的事实,是成熟的表现,是你敢于承担责任的表现。社会上对于我们这些80后...
今天要教授英语单词,可以用哪些小游戏
可以用一些发音规则的小游戏。英语是拼音文字,和汉语拼音一样,一共有50个音素(英国英语是48个,澳大利亚英语是49个),各个音素是由字母来表示的,字母就是表示发音的符号,只要熟记发音规则,你就可以熟悉单字的发音,基本不需要看音标,同时听到一个字的声音,还可以把这个字拼出来。第一节:26个...
用C语言编写的小游戏代码是什么?
“猜数字小游戏”,每个数字后按空格,最后按回车确认 include<stdio.h> include<stdlib.h> include int a[4],b[4];int count=0; \/\/计算猜测次数 void csh( ); \/\/初始化 void start( ); \/\/开始游戏 int main( ){ csh( );start( );} void csh( ) \/\/初始化 { printf("\\...
请问这是什么游戏?小游戏
《热血海贼王》是由最游戏研发并运营,4399小游戏、麒麟神、新浪玩玩、ya247、休闲游戏平台、37wan、125wan、49you、g361游戏平台、欢乐园游戏、1773游戏、51游戏社区、91wan、360游戏、198game、51wan、兄弟玩、go823平台、73994平台、u193、紫霞游戏、微微玩、8090游戏平台、好玩西网页游戏网、5173页游推荐、鼎牛竞技、...
求脑筋急转弯型的智力小游戏 ~像伸出1跟手指,问这是几,接着伸出2跟手...
24.Q:狼、老虎和狮子玩游戏,谁一定会被淘汰?A:淘汰狼(桃太郎)25.Q:世界上最富有同情心的动漫人物是谁?A:机器猫。Why:因为他总是向人伸出圆手(援手)!26.问:世界上最最黑暗的动漫人物是谁?答:还是机器猫!为什么:因为他伸手不见五指……27.Q:非洲食人族的酋长吃什么?A:人...
求一个小游戏,名字叫键盘钢琴
2012-08-18 键盘钢琴小游戏. 5 2008-10-22 键盘弹钢琴小游戏···带乐谱的 178 2011-03-06 键盘钢琴小游戏曲谱 专属回忆, 9 2012-04-08 急求用电脑键盘弹钢琴的小游戏的曲谱N首? 2010-02-08 键盘弹钢琴小游戏仙剑四琴谱 127 2010-09-20 数字键盘钢琴小游戏 24 更多类似问题 > 为...
魔塔小游戏
贤者攻略P:注意事项:(续)站在假公主前面,按W键使用神剑之证,将假公主变成史来姆,灭之;上前一步,按T键使用任意门,打开就进入了神秘楼8楼。打完楼里的怪物,开三红门救出的公主才是真的。此时游戏才真正结束:提示语说魔塔毁了,再也没有怪物了。贤者攻略Q:注意事项:(6)另有两个怪物...
华纳冒险 flash小游戏 steppenwolf的攻略
华纳世界出品的超精美史诗级冒险全集,是所有热爱flash小游戏的人不可错过的冒险大餐,从今天开始连载,每天两集,希望大家都能快乐的游戏,无忧的通关。 游戏中的操作方法:切换道具:T键 决定:空格键 跑:SHIFT键+方向键 跳跃:CTRL键 大跳跃:CTR键+SHIFT键,技巧:在大跳跃的时候不用同时按CTR键+SHIFT键,可以先按住SHI...
求一个小游戏的名称和攻略
T A L K 窗户开1次那个关闭之前∶ +1分钟 主要的画面时常时间正流请注意。另外控制期间也什麼都不多么时间流逝。终 蒸发∶ 在在L v 11以下13号不回家的转学生和家前面遇不到 追踪∶ 是因L v 11以下在13号上回家和转校生的会谈话出来的协力巢选择 死亡∶ 选择是13号回家,和转校生的会...
钟凌猴菇: QT是跟PT差不多的游戏`很好玩的喔`
岱岳区13018821326: QT是什么游戏??
钟凌猴菇: 网络游戏!
岱岳区13018821326: QT是什么游戏 - ?
钟凌猴菇: 所谓的QT就是QQ游戏中的QQ堂
岱岳区13018821326: QT是个什么样的游戏?
钟凌猴菇: QT是1个充满人性化的游戏 也是个感性的游戏
岱岳区13018821326: QT这个游戏好玩吗??
钟凌猴菇: Qt这个游戏非常好玩,.是一个很有挑战性的游戏
岱岳区13018821326: qt打字怎么弄??
钟凌猴菇: 进房间60秒即可,但是如果你的网名太另类 或者有什么符合 打字会全是代码.
岱岳区13018821326: QT怎么玩??? - ?
钟凌猴菇: QQT玩法以及绝招: 1.胜负判断: [胜利条件]敌方队伍所有的队员全灭; [失败条件]我方队伍所有的队员全灭. 2.救人/人物死亡:如果玩家被爆炸的QQ糖浆的黏液碰到,即被QQ糖浆包围成一团果冻给困住,人物不能移动.如果此时我方队友碰...
岱岳区13018821326: QT打字游戏项目外包?
钟凌猴菇: 可以到智城软件外包平台上发个Qt项目,只需要5分钟,这个平台有很多qt开发者,希望能找到你想要的人.地址 http://www.taskcity.com
岱岳区13018821326: QT游戏中如何回复密语??
钟凌猴菇: 楼主你好:/r 就可以回复了
岱岳区13018821326: 轩辕传奇QT怎么玩 - ?
钟凌猴菇: 您好,很高兴为您解答,每天去QT那个npc那里接任务,然后游戏内直接打开QT就行,60分钟后任务完成去领礼包就ok了.祝游戏愉快!