帮我写一个我的世界2D版c++代码
时间: 2023-08-02 17:34:28 浏览: 249
好的,以下是一个简单的C++代码示例,可以帮助您开始编写您的世界2D游戏:
```c++
#include <iostream>
#include <vector>
#include <SFML/Graphics.hpp>
// 玩家类
class Player {
public:
int x;
int y;
int speed;
Player(int x, int y, int speed) {
this->x = x;
this->y = y;
this->speed = speed;
}
void move(int dx, int dy) {
this->x += dx * this->speed;
this->y += dy * this->speed;
}
};
// 地图类
class Map {
public:
int width;
int height;
std::vector<std::vector<int>> tiles;
Map(int width, int height) {
this->width = width;
this->height = height;
this->tiles = std::vector<std::vector<int>>(width, std::vector<int>(height, 0));
}
int getTile(int x, int y) {
if (x >= 0 && x < this->width && y >= 0 && y < this->height) {
return this->tiles[x][y];
} else {
return 0;
}
}
void setTile(int x, int y, int value) {
if (x >= 0 && x < this->width && y >= 0 && y < this->height) {
this->tiles[x][y] = value;
}
}
};
int main() {
// 创建窗口
sf::RenderWindow window(sf::VideoMode(800, 600), "My World 2D");
// 创建玩家和地图
Player player(0, 0, 5);
Map map(20, 20);
// 游戏循环
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
// 处理玩家输入
int dx = 0;
int dy = 0;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) {
dx = -1;
} else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) {
dx = 1;
} else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) {
dy = -1;
} else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)) {
dy = 1;
}
player.move(dx, dy);
// 渲染游戏画面
window.clear(sf::Color::White);
for (int x = 0; x < map.width; x++) {
for (int y = 0; y < map.height; y++) {
int tile = map.getTile(x, y);
if (tile == 1) {
sf::RectangleShape rect(sf::Vector2f(32, 32));
rect.setPosition(x * 32, y * 32);
rect.setFillColor(sf::Color::Black);
window.draw(rect);
}
}
}
sf::RectangleShape playerRect(sf::Vector2f(32, 32));
playerRect.setPosition(player.x, player.y);
playerRect.setFillColor(sf::Color::Red);
window.draw(playerRect);
window.display();
}
return 0;
}
```
以上代码使用SFML库创建一个窗口并启动游戏循环。在游戏循环中,它处理玩家输入并渲染游戏世界。
玩家类包含一个move()方法,用于处理玩家的移动。地图类包含getTile()和setTile()方法,用于获取和设置地图上的砖块类型。
这只是一个简单的例子,但我希望它能帮助您开始编写您的世界2D游戏。如果您需要更多帮助,请告诉我。
阅读全文