小编lef*_*fti的帖子

Pygame:更改游戏分辨率

我开发 2D 横向卷轴平台游戏已经有一段时间了。这是我的第一个正式游戏,而且快完成了。到目前为止我还没有对决议进行太多思考。

我的游戏是基于图块的,大多数图块和玩家精灵都是尺寸为 40x40 像素的 .PNG 文件。默认屏幕高度和宽度为 1280x720。据我所知,现在的大多数游戏都有许多不同的分辨率选择和不同的宽高比。

我想为玩家提供多种分辨率选择,例如 800x600、1024x768 和 1280x720。需要这样做,以便玩家可以在游戏中看到相同数量的图块,无论分辨率如何,以免使用分辨率带来不公平的优势或劣势。实现这一目标的最佳方法是什么?

我考虑过根据给定的分辨率缩放游戏的精灵,使用

self.image = pygame.transform.scale(self.image, (30, 30))
self.image = pygame.transform.smoothscale(self.image, (30, 30))
Run Code Online (Sandbox Code Playgroud)

这意味着精灵会按比例缩小,大小为 30x30 像素。是目标尺寸。我让它们正常工作,但两者的问题都是质量下降。pygame.transform.smoothscale 较少,但对我来说仍然足够明显。

这让我想知道,解决这个问题的最佳方法真的是制作相同文件但尺寸不同的新艺术资源吗?这看起来工作量很大,当你有多种分辨率选择时更是如此。我还考虑过制定一个默认的屏幕分辨率,坚持使用它,不让玩家选择任何分辨率。但我宁愿不这样做。

python pygame resolution screen-resolution python-2.7

5
推荐指数
1
解决办法
4040
查看次数

错误C2280:尝试引用已删除的函数(尝试调用vector.erase)

我是C++的新手.我正在使用SFML和Box2D开发一个突破克隆,我在编译时遇到这个错误.错误详情:

c:\program files (x86)\visual studio express 2013\vc\include\xutility(2420): error C2280: 'Tile &Tile::operator =(const Tile &)' : attempting to reference a deleted function
c:\users\harry\documents\visual studio 2013\projects\cpp-breakout\cpp-breakout\entities\tile.hpp(27) : compiler has generated 'Tile::operator =' here
Run Code Online (Sandbox Code Playgroud)

当我尝试使用vector.erase从std :: vector <Tile>中删除Tile对象时出现错误.

Tile.h

class Tile : public Entity {
public:
    Tile(b2World* world, float posX, float posY);
    void draw(sf::RenderWindow& window);

    const float PTM_RATIO = 32.f;
    const int HALF_WIDTH = 32;
    const int HALF_HEIGHT = 16;
    int armor;
    bool flaggedToErase = false;

    b2Body* tileBody;
    sf::Sprite sprite;
};

Tile.cpp

Tile::Tile(b2World* …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors vector deleted-functions

2
推荐指数
1
解决办法
8809
查看次数