gpt4 book ai didi

c++ - (Qt) 如何使用另一个函数的值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:46:50 26 4
gpt4 key购买 nike

所以这是我的问题。我正在用 Qt 制作一个非常简单的游戏,但我无法增加游戏的难度。例如,一旦您的分数达到某个值,您就会升级。在游戏中,文字发生变化并显示为第 2 级,但游戏并没有变得更难。我的想法是通过让敌人移动得更快来实现这一点。我让敌人以预定义的值移动,但我希望位置变化等于 Level.cpp 中的值“速度”。答案可能就在我眼前,但最简单的答案总能打动我。下面是连接 Level.cpp 和 Enemy.cpp 的头文件和 2 个源文件。

敌人.cpp

#include "Enemy.h"
#include <QTimer>
#include <QGraphicsScene>
#include <QList>
#include <stdlib.h>
#include "Game.h"
#include "Level.h"

extern Game * game;

Enemy::Enemy(QGraphicsItem *parent): QObject(), QGraphicsPixmapItem(parent){
//set random x position
int random_number = rand() % 700;
setPos(random_number,0);

// drew the rect
setPixmap(QPixmap(":/images/enemy.png"));
setTransformOriginPoint(50,50);

// make/connect a timer to move() the enemy every so often
QTimer * timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(move()));

// start the timer
timer->start(30);
}

void Enemy::move(){
// move enemy down
setPos(x(),y()+7);
//Instead of 7 above, use speed from Level.cpp

// destroy enemy when it goes out of the screen
if (pos().y() > 600){
//decrease the health
game->health->decrease();
scene()->removeItem(this);
delete this;
}
}

Level.cpp

#include "Level.h"
#include "Enemy.h"
#include <QFont>

Level::Level(QGraphicsItem *parent): QGraphicsTextItem(parent){
// initialize the score to 0
level = 1;
speed = 5;
// draw the text
setPlainText(QString("Level: ") + QString::number(level)); // Level: 0
setDefaultTextColor(Qt::green);
setFont(QFont("times",16));
}

void Level::LevelUp(){
level++;
speed = speed+2;
setPlainText(QString("Level: ") + QString::number(level)); // Level: 1
}

int Level::getLevel(){
return level;
return speed;
}

Level.h

#ifndef LEVEL_H
#define LEVEL_H

#include <QGraphicsTextItem>

class Level: public QGraphicsTextItem{
public:
Level(QGraphicsItem * parent=0);
int getLevel();
void LevelUp();
int speed; //speed is public because I got "int is private" errors on a few things I tried.
private:
int level;
};

#endif // LEVEL_H

感谢您的帮助,如果可能的话,请深入解释您为解决问题所做的工作。

编辑:我的问题是否是尝试发送 Speed,但由于 Level 函数被标记为 QGraphicsTextItem 而无法发送?我是否只需要创建一个单独的函数来提高速度?

最佳答案

不确定您使用的是哪种设计模式,但听起来您需要一个 Controller 来控制敌方对象。所以基本上每当级别改变时,级别 obj 应该告诉 Controller ,现在敌人应该增加速度。然后 Controller 会通知敌人。

关于c++ - (Qt) 如何使用另一个函数的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36749955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com