- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在使用 SFML 开发游戏,但我遇到了函数问题。
这是代码:
敌人.h:
#ifndef ENEMY_H
#define ENEMY_H
#include<SFML/Graphics.hpp>
class Enemy {
private:
sf::Texture texture;
sf::Sprite enemySprite;
float enemySpeed;
int maxY, maxX;
public:
Enemy(int _maxY, int _maxX);
void render(sf::RenderWindow *wnd);
void update(sf::Time deltaTime);
void reset(float speed);
};
#endif
敌人.cpp:
#include <ctime>
Enemy::Enemy(int _maxY, int _maxX) {
texture.loadFromFile("SFML-Game-Development-Book-
master/03_World/Media/Textures/Raptor.png");
enemySprite.setTexture(texture);
enemySprite.rotate(180);
maxY = _maxY;
maxX = _maxX;
}
void Enemy::render(sf::RenderWindow *wnd){
wnd->draw(enemySprite);
}
void Enemy::reset(float speed){
srand(time(NULL));
int num = rand();
enemySpeed = speed;
enemySprite.setPosition(num%maxX, maxY);
}
void Enemy::update(sf::Time deltaTime){
enemySprite.move(0.0f, enemySpeed * deltaTime.asSeconds());
if (enemySprite.getPosition().y > 600){
reset(enemySpeed);
}
}
游戏.h:
class Game {
private:
sf::RenderWindow *mWindow;
Aircraft aircraft;
std::vector<Enemy> enemies;
void reset();
private:
void proccesEvent();
void update(sf::Time deltaTime);
void render();
public:
Game();
void run();
};
游戏.cpp:
Game::Game(){
mWindow = new sf::RenderWindow(sf::VideoMode(800,600), "ventana SFML");
for (int i=0; i<5; i++){
enemies.push_back(Enemy(800, 600));
}
}
void Game::proccesEvent(){
sf::Event event;
while(mWindow->pollEvent(event)){
if(event.type == sf::Event::Closed){
mWindow->close();
}
}
}
void Game::reset(){
for (int i=0; enemies.size(); i++){
enemies[i].reset(100.0f);
}
}
void Game::update(sf::Time deltaTime){
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W)){
aircraft.Up();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::S)){
aircraft.Down();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)){
aircraft.Left();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)){
aircraft.Right();
}
aircraft.update(deltaTime);
for (int i=0; i<enemies.size(); i++){
enemies[i].update(deltaTime);
}
}
void Game::render(){
mWindow->clear();
aircraft.Render(mWindow);
for (int i=0; i<enemies.size(); i++){
enemies[i].render(mWindow);
}
mWindow->display();
}
void Game::run(){
sf::Clock clock;
while(mWindow->isOpen()){
sf::Time deltaTime = clock.restart();
proccesEvent();
reset();
update(deltaTime);
render();
}
}
我认为问题出在 Enemy 类中的函数 reset 中,因为当我使用调试器时它会在该函数中停止。
问题是什么,我该如何解决?
这个想法是 Enemy 是一艘沿 Y 轴始终向下移动的船
最佳答案
问题来了。你忘了使用不等式。 enimies.size() 将始终返回 true(如果有的话)。但你真的想要 i < enemies.size()。
void Game::reset(){
for (int i=0; i < enemies.size(); i++){
enemies[i].reset(100.0f);
}
}
关于c++ - 如何解决这个 "arithmetic exception"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43375019/
我阅读了以下问题:Value of i for (i == -i && i != 0) to return true in Java并留下了微微的眼花。 一读到spacecraft being los
我试图记住 Javascript 中称为“发条算术”的东西,我很久以前在有关幻灯片/轮播的教程中读过它。 (术语可能有误,因为我在谷歌中找不到任何有用的东西) 它是以下代码的简写: a = a + 1
我想知道类型转换在实践中是如何在类型之间进行的(在“嵌入式”C 中)。例如:如果我有一个 Signed 16-bit 数字,值为 -80d,11010000b,我想将它转换为 无符号 16 位。我
题目地址:https://leetcode.com/problems/arithmetic-slices/description/ 题目描述 Asequence of number is call
假设我有以下 data.frame 由多行(此处未全部显示)和 31 列组成。第一个(并且应该保留)标记为“gene_ID”,从第二个一直到第 30 列,它们都有奇怪的名称,如下所示: |gene_
我正在尝试从 Sightly 列表中的项目总数中减去 2。 ${itemList.size -2 @ context='number'} 结果是: org.
接听时this问题 我尝试运行此代码(用于生成给定范围内的随机数); #include #include #include #include int main() { int max_r
虽然至少从手波的角度来看,我相信我知道“算术运算符”是什么,但我正在寻找一个正式的定义。我检查了 C17 标准文档,但找不到这样的定义,尽管它在多个地方使用了术语“算术运算符”。 我能找到的最接近的是
您好,我正在使用 SFML 开发游戏,但我遇到了函数问题。 这是代码: 敌人.h: #ifndef ENEMY_H #define ENEMY_H #include c
在惯用的 C 风格中,可以使用两个参数以一种简单的方式实现快速排序: void quicksort(int inputArray[], int numelems); 我们可以通过指针算法安全地使用两个
众所周知,我们可以通过算术表达式在SQL语句中进行计算。算术表达式可以包含列名、数值和算术运算。以下是 SQL 语句语法: SELECT [arithmetic operator]... FROM [
如何解决这些警告? // midiNote is a double as it is used in floating point equation // v is int because that'
我正在使用提示创建一个基本计算器。用户输入一个数字、一个操作数和另一个数字,这将为他们提供正确的答案。 问题:无论使用哪种运算符,我的号码都在成倍增加。例如,输入 5+5 得到的值是 25。 为什么我
如果我有定义: typedef struct y_t *Y; 和 typedef struct x_t *X; struct x_t { Y *b; Y a; int s
我正在使用 Android 工具链编译 Android 内核。在驱动程序内部,我需要使用 double 算术,但是当我编译时,我会遇到很多错误,每次使用 double 类型时都会出现一个错误。例如我得
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我需要有关 JSP 中以下 EL 代码段的说明 $ {5/x} : ${5/x} $ {10/0} : ${10/0} $ {5/2} : ${5/2} $ {x/10} : ${x/10} $ {5
我正在尝试编写一个包含小于或大于的脚本,但它给了我以下错误消息:语法错误:需要算术表达式请告知下面的代码示例: x=1 for ($x -lt 21) -- I tried the fo
我正在尝试编写一个程序来执行简单的算术运算。我想让程序提示用户输入两个数字,然后计算出五个结果: 总和 区别 产品 两个整数的商 浮点除法。 现在,我记得在 Python 2 中,通常有用于字符串的
我一直在努力理解这个程序的输出: #include int main(){ static int arr[] = {0, 1, 2, 3, 4}; int *p[] = {ar
我是一名优秀的程序员,十分优秀!