导航:首页 > 玩小游戏 > qt小游戏

qt小游戏

发布时间:2021-04-21 10:41:33

❶ 基于Qt小游戏的设计与实现

Qt小游戏的设计与实现
这个你想达到的功能是确这样我才好,帮到你的

❷ 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;
}

❸ 现在大型单机游戏大都是用QT开发的吗

Qt只是一个跨平台的应用程序开发框架,在游戏方面和使用C++也才不多,对于大型游戏开发还是要使用游戏引擎,所以几乎很少

❹ QT是什么游戏

《兲骄3》更是被评为业界最看好的网游大作

❺ 用Qt编程纸牌游戏中的纸牌用什么构件啊

QGraphicsItem,QGraphicsView,QGraphicsScene.
很难的,但是很灵活.
祝好运.

❻ qt打字小游戏

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
版权声明:本文为博主原创文章,转载请附上博文链接!

阅读全文

与qt小游戏相关的资料

热点内容
手机vr射击游戏 浏览:260
幼儿园拼音游戏 浏览:486
儿童学诗游戏 浏览:439
苹果手机赛车游戏排行 浏览:750
小馒头迷你游戏狙击地图解说 浏览:68
儿童游戏赛跑 浏览:988
植物大战僵尸免费游戏 浏览:707
幼儿小班室内游戏大全 浏览:863
小班闯关游戏 浏览:352
忆涵游戏解说直播木兰 浏览:220
游戏怎么封号 浏览:377
直播游戏赌 浏览:867
推塔手机游戏 浏览:340
仙剑奇侠传3单机游戏 浏览:452
开发大脑的益智游戏 浏览:920
捉泥鳅亲子游戏 浏览:424
游戏直播圈粉 浏览:154
安卓模拟器游戏数据包 浏览:812
三国志单机游戏大全 浏览:79
游戏时光直播 浏览:181