写一个图形游戏的c++代码
时间: 2023-12-19 09:06:57 浏览: 164
一个用c++写的游戏源代码
4星 · 用户满意度95%
这里是一个简单的图形游戏代码示例,使用了 C++ 和 SFML 库:
```cpp
#include <SFML/Graphics.hpp>
#include <iostream>
#include <cstdlib>
int main()
{
// 创建窗口
sf::RenderWindow window(sf::VideoMode(800, 600), "My Game");
// 创建玩家
sf::RectangleShape player(sf::Vector2f(50.0f, 50.0f));
player.setFillColor(sf::Color::Green);
player.setPosition(400.0f, 500.0f);
// 创建敌人
sf::RectangleShape enemy(sf::Vector2f(50.0f, 50.0f));
enemy.setFillColor(sf::Color::Red);
enemy.setPosition(400.0f, 100.0f);
float enemySpeed = 3.0f;
// 创建计分板
sf::Font font;
font.loadFromFile("arial.ttf");
sf::Text scoreText;
scoreText.setFont(font);
scoreText.setCharacterSize(30);
scoreText.setFillColor(sf::Color::White);
scoreText.setString("Score: 0");
scoreText.setPosition(10.0f, 10.0f);
int score = 0;
// 游戏循环
while (window.isOpen())
{
// 处理事件
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
{
window.close();
}
}
// 移动玩家
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
player.move(-5.0f, 0.0f);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
player.move(5.0f, 0.0f);
}
// 移动敌人
enemy.move(0.0f, enemySpeed);
if (enemy.getPosition().y > 600.0f)
{
enemy.setPosition(std::rand() % 700 + 50, 0.0f);
score++;
scoreText.setString("Score: " + std::to_string(score));
}
// 碰撞检测
if (player.getGlobalBounds().intersects(enemy.getGlobalBounds()))
{
window.close();
std::cout << "Game Over! Score: " << score << std::endl;
}
// 绘制场景
window.clear();
window.draw(player);
window.draw(enemy);
window.draw(scoreText);
window.display();
}
return 0;
}
```
该游戏简单地创建了一个玩家和一个敌人,并让敌人从上往下匀速移动。玩家可以使用左右箭头键移动,如果玩家和敌人发生碰撞,游戏结束,打印出分数。游戏同时还有一个计分板,记录玩家的得分。该游戏使用了 SFML 图形库来创建图形界面和处理图形事件。
阅读全文