成都房地产网宝应seo优化公司
2026/2/18 21:57:01 网站建设 项目流程
成都房地产网,宝应seo优化公司,凡科网站官网登录入口,wordpress wp 缺点我将为您创建一个老鹰抓海龟游戏。这是一个创新的追逐游戏#xff0c;具有独特的玩法机制。项目结构eagle_turtle_game/├── main.cpp├── game.h├── game.cpp├── eagle.h├── eagle.cpp├── turtle.h├── turtle.cpp├── beach.h├── beach.…我将为您创建一个老鹰抓海龟游戏。这是一个创新的追逐游戏具有独特的玩法机制。项目结构eagle_turtle_game/├── main.cpp├── game.h├── game.cpp├── eagle.h├── eagle.cpp├── turtle.h├── turtle.cpp├── beach.h├── beach.cpp└── README.md1. 头文件定义game.h#ifndef GAME_H#define GAME_H#include beach.h#include eagle.h#include turtle.hclass Game {private:Beach* beach;Eagle* eagle;Turtle* turtle1;Turtle* turtle2;bool isRunning;int gameState; // 0: 进行中, 1: 海龟胜利, 2: 老鹰胜利int score;int round;public:Game(int width 60, int height 20);~Game();// 游戏初始化void initialize();// 游戏主循环void run();// 处理输入void handleInput();// 更新游戏状态void update();// 渲染游戏画面void render();// 检查游戏结束条件bool checkGameOver();// 获取游戏状态int getGameState() const { return gameState; }int getScore() const { return score; }int getRound() const { return round; }// 重置游戏void reset();// 海龟获胜处理void turtleWin();// 老鹰获胜处理void eagleWin();};#endifbeach.h#ifndef BEACH_H#define BEACH_H#include vector#include stringclass Beach {private:int width;int height;std::vectorstd::vectorchar grid;int seaLine; // 海岸线位置int skyLine; // 天空线位置public:Beach(int w, int h);~Beach();// 初始化海滩void initialize();// 绘制海滩环境void drawEnvironment();// 在控制台显示海滩void displayConsole() const;// 获取海滩尺寸int getWidth() const { return width; }int getHeight() const { return height; }int getSeaLine() const { return seaLine; }int getSkyLine() const { return skyLine; }// 检查位置是否有效bool isValidPosition(int x, int y) const;// 清空指定位置void clearPosition(int x, int y);// 设置指定位置内容void setPosition(int x, int y, char symbol);// 获取指定位置内容char getPosition(int x, int y) const;};#endifeagle.h#ifndef EAGLE_H#define EAGLE_H#include vectorenum EagleDirection { E_UP, E_DOWN, E_LEFT, E_RIGHT, E_DIVING };struct EaglePosition {int x, y;EagleDirection dir;EaglePosition(int _x 0, int _y 0, EagleDirection d E_UP): x(_x), y(_y), dir(d) {}};class Eagle {private:EaglePosition position;int speed;int diveSpeed;bool isDiving;int targetX, targetY;int energy;public:Eagle(int startX 30, int startY 2);~Eagle();// 初始化老鹰void initialize();// 移动老鹰void move();// 俯冲攻击void dive(int targetX, int targetY);// 改变飞行方向void changeDirection(EagleDirection newDir);// 停止俯冲void stopDive();// 获取老鹰位置EaglePosition getPosition() const;// 检查是否在俯冲bool isCurrentlyDiving() const;// 获取能量值int getEnergy() const { return energy; }// 消耗能量void consumeEnergy(int amount);// 恢复能量void restoreEnergy(int amount);// 重置老鹰void reset(int startX, int startY);// AI自动追踪void aiTrackTurtles(const std::vectorint turtleX, const std::vectorint turtleY);};#endifturtle.h#ifndef TURTLE_H#define TURTLE_H#include vectorenum TurtleState { ALIVE, INJURED, SAFE };struct TurtlePosition {int x, y;TurtleState state;TurtlePosition(int _x 0, int _y 0, TurtleState s ALIVE): x(_x), y(_y), state(s) {}};class Turtle {private:TurtlePosition position;int speed;int id;bool hasReachedSea;public:Turtle(int turtleId, int startX 0, int startY 0);~Turtle();// 初始化海龟void initialize();// 移动海龟void move(char direction);// 受伤void getInjured();// 到达安全区void reachSafety();// 获取海龟位置TurtlePosition getPosition() const;// 获取海龟IDint getId() const { return id; }// 是否已到达大海bool isSafe() const;// 是否还活着bool isAlive() const;// 重置海龟void reset(int startX, int startY);// 获取移动速度int getSpeed() const { return speed; }};#endif2. 源文件实现game.cpp#include game.h#include iostream#include conio.h#include windows.h#include thread#include chrono#include random#include algorithmusing namespace std;Game::Game(int width, int height): round(1), isRunning(false), gameState(0), score(0) {beach new Beach(width, height);eagle new Eagle(width / 2, 2);turtle1 new Turtle(1, 10, height - 3);turtle2 new Turtle(2, width - 11, height - 3);}Game::~Game() {delete beach;delete eagle;delete turtle1;delete turtle2;}void Game::initialize() {system(cls);cout 老鹰抓海龟游戏 endl;cout 游戏规则 endl;cout 1. 两只海龟要快速爬向大海逃生 endl;cout 2. 老鹰会追击海龟被抓到就输了 endl;cout 3. 海龟到达大海就获胜 endl;cout 4. 海龟控制1/2号海龟 WASD移动 endl;cout 5. 老鹰控制方向键移动空格键俯冲 endl;cout 按任意键开始第 round 回合... endl;_getch();isRunning true;gameState 0;beach-initialize();eagle-reset(beach-getWidth() / 2, 2);turtle1-reset(10, beach-getHeight() - 3);turtle2-reset(beach-getWidth() - 11, beach-getHeight() - 3);}void Game::run() {while (isRunning) {handleInput();update();render();// 控制游戏速度this_thread::sleep_for(chrono::milliseconds(150));if (checkGameOver()) {break;}}}void Game::handleInput() {if (!_kbhit()) return;char key _getch();// 处理方向键需要特殊处理if (key 224) { // 方向键前缀key _getch();switch (key) {case 72: // 上箭头eagle-changeDirection(E_UP);break;case 80: // 下箭头eagle-changeDirection(E_DOWN);break;case 75: // 左箭头eagle-changeDirection(E_LEFT);break;case 77: // 右箭头eagle-changeDirection(E_RIGHT);break;}} else {switch (key) {// 海龟1控制 (数字1 方向)case 1:char nextKey1 _getch();switch (nextKey1) {case w: case W: turtle1-move(w); break;case s: case S: turtle1-move(s); break;case a: case A: turtle1-move(a); break;case d: case D: turtle1-move(d); break;}break;// 海龟2控制 (数字2 方向)case 2:char nextKey2 _getch();switch (nextKey2) {case w: case W: turtle2-move(w); break;case s: case S: turtle2-move(s); break;case a: case A: turtle2-move(a); break;case d: case D: turtle2-move(d); break;}break;// 老鹰俯冲攻击case :// 自动选择最近的海龟作为目标eagle-dive(turtle1-getPosition().x, turtle1-getPosition().y);break;// 游戏控制case q: case Q:isRunning false;break;case r: case R:reset();break;}}}void Game::update() {if (!isRunning || gameState ! 0) return;// 老鹰AI追踪海龟vectorint turtleX {turtle1-getPosition().x, turtle2-getPosition().x};vectorint turtleY {turtle1-getPosition().y, turtle2-getPosition().y};eagle-aiTrackTurtles(turtleX, turtleY);// 移动老鹰eagle-move();// 检查碰撞EaglePosition eaglePos eagle-getPosition();// 检查老鹰是否抓到海龟1if (eagle-isCurrentlyDiving() abs(eaglePos.x - turtle1-getPosition().x) 1 abs(eaglePos.y - turtle1-getPosition().y) 1) {turtle1-getInjured();eagle-stopDive();}// 检查老鹰是否抓到海龟2if (eagle-isCurrentlyDiving() abs(eaglePos.x - turtle2-getPosition().x) 1 abs(eaglePos.y - turtle2-getPosition().y) 1) {turtle2-getInjured();eagle-stopDive();}// 检查海龟是否到达大海if (turtle1-getPosition().y beach-getSeaLine() turtle1-isAlive()) {turtle1-reachSafety();}if (turtle2-getPosition().y beach-getSeaLine() turtle2-isAlive()) {turtle2-reachSafety();}}void Game::render() {system(cls);// 创建显示网格vectorvectorchar display(beach-getHeight(),vectorchar(beach-getWidth(), ));// 绘制海滩环境for (int i 0; i beach-getHeight(); i) {for (int j 0; j beach-getWidth(); j) {display[i][j] beach-getPosition(j, i);}}// 绘制老鹰EaglePosition eaglePos eagle-getPosition();if (eaglePos.x 0 eaglePos.x beach-getWidth() eaglePos.y 0 eaglePos.y beach-getHeight()) {if (eagle-isCurrentlyDiving()) {display[eaglePos.y][eaglePos.x] ▼; // 俯冲状态} else {display[eaglePos.y][eaglePos.x] ; // 飞行状态}}// 绘制海龟TurtlePosition turtle1Pos turtle1-getPosition();if (turtle1Pos.x 0 turtle1Pos.x beach-getWidth() turtle1Pos.y 0 turtle1Pos.y beach-getHeight()) {if (turtle1-isAlive()) {display[turtle1Pos.y][turtle1Pos.x] 1;} else {display[turtle1Pos.y][turtle1Pos.x] x; // 死亡标记}}TurtlePosition turtle2Pos turtle2-getPosition();if (turtle2Pos.x 0 turtle2Pos.x beach-getWidth() turtle2Pos.y 0 turtle2Pos.y beach-getHeight()) {if (turtle2-isAlive()) {display[turtle2Pos.y][turtle2Pos.x] 2;} else {display[turtle2Pos.y][turtle2Pos.x] x; // 死亡标记}}// 输出游戏画面cout 老鹰抓海龟 - 回合: round 得分: score 老鹰能量: eagle-getEnergy() endl;cout 控制: 1WASD控制海龟1, 2WASD控制海龟2, 方向键空格键控制老鹰 endl;cout ;for (int i 0; i beach-getWidth(); i) cout -;cout endl;for (int i 0; i beach-getHeight(); i) {cout |;for (int j 0; j beach-getWidth(); j) {cout display[i][j];}cout | endl;}cout ;for (int i 0; i beach-getWidth(); i) cout -;cout endl;// 显示状态信息cout 海龟1: (turtle1-isAlive() ? (turtle1-isSafe() ? 已安全 : 存活) : 已死亡) endl;cout 海龟2: (turtle2-isAlive() ? (turtle2-isSafe() ? 已安全 : 存活) : 已死亡) endl;cout 老鹰状态: (eagle-isCurrentlyDiving() ? 俯冲中 : 巡航中) endl;}bool Game::checkGameOver() {// 检查海龟胜利条件if ((turtle1-isSafe() || !turtle1-isAlive()) (turtle2-isSafe() || !turtle2-isAlive())) {if (turtle1-isSafe() || turtle2-isSafe()) {turtleWin();return true;}}// 检查老鹰胜利条件抓到两只海龟if (!turtle1-isAlive() !turtle2-isAlive()) {eagleWin();return true;}// 检查海龟到达大海的胜利条件if (turtle1-isSafe() turtle2-isSafe()) {turtleWin();return true;}return false;}void Game::turtleWin() {gameState 1;score 100 * round;cout \n 海龟获胜它们成功逃到大海了 endl;cout 当前得分: score endl;}void Game::eagleWin() {gameState 2;cout \n 老鹰获胜它抓住了所有海龟 endl;}void Game::reset() {round;gameState 0;eagle-reset(beach-getWidth() / 2, 2);turtle1-reset(10, beach-getHeight() - 3);turtle2-reset(beach-getWidth() - 11, beach-getHeight() - 3);isRunning true;}beach.cpp#include beach.hBeach::Beach(int w, int h) : width(w), height(h) {grid.resize(height, vectorchar(width, ));seaLine height * 2 / 3; // 2/3处为海岸线skyLine height * 1 / 4; // 1/4处为天空线}Beach::~Beach() {// 清理资源}void Beach::initialize() {// 初始化海滩环境for (int i 0; i height; i) {for (int j 0; j width; j) {if (i skyLine) {grid[i][j] ~; // 天空波浪} else if (i seaLine) {grid[i][j] ; // 海平面} else if (i height - 1) {grid[i][j] #; // 沙滩底部} else {grid[i][j] ·; // 沙滩沙子}}}// 绘制一些装饰for (int i 0; i width; i 5) {if (skyLine height - 1) {grid[skyLine-1][i] ^; // 云朵}}}void Beach::drawEnvironment() {// 环境已经在initialize中绘制完成}void Beach::displayConsole() const {for (int i 0; i height; i) {for (int j 0; j width; j) {cout grid[i][j];}cout endl;}}bool Beach::isValidPosition(int x, int y) const {return x 0 x width y 0 y height;}void Beach::clearPosition(int x, int y) {if (isValidPosition(x, y)) {grid[y][x] ;}}void Beach::setPosition(int x, int y, char symbol) {if (isValidPosition(x, y)) {grid[y][x] symbol;}}char Beach::getPosition(int x, int y) const {if (isValidPosition(x, y)) {return grid[y][x];}return ;}eagle.cpp#include eagle.h#include cmath#include cstdlib#include ctimeEagle::Eagle(int startX, int startY): position(startX, startY, E_UP), speed(1), diveSpeed(2),isDiving(false), targetX(0), targetY(0), energy(100) {srand(static_castunsigned int(time(nullptr)));}Eagle::~Eagle() {// 清理资源}void Eagle::initialize() {position EaglePosition(30, 2, E_UP);speed 1;isDiving false;energy 100;}void Eagle::move() {if (isDiving) {// 俯冲移动int dx targetX - position.x;int dy targetY - position.y;double distance sqrt(dx * dx dy * dy);if (distance diveSpeed) {// 到达目标附近停止俯冲position.x targetX;position.y targetY;stopDive();} else {// 继续俯冲position.x static_castint(dx / distance * diveSpeed);position.y static_castint(dy / distance * diveSpeed);}// 消耗能量consumeEnergy(2);} else {// 正常飞行移动switch (position.dir) {case E_UP:position.y max(0, position.y - speed);break;case E_DOWN:position.y min(50, position.y speed); // 限制高度break;case E_LEFT:position.x max(0, position.x - speed);break;case E_RIGHT:position.x min(100, position.x speed); // 限制宽度break;case E_DIVING:// 准备俯冲break;}// 恢复少量能量restoreEnergy(1);}}void Eagle::dive(int targetX, int targetY) {if (energy 20) { // 需要足够能量才能俯冲this-targetX targetX;this-targetY targetY;isDiving true;position.dir E_DIVING;consumeEnergy(20); // 俯冲消耗大量能量}}void Eagle::changeDirection(EagleDirection newDir) {if (!isDiving) {position.dir newDir;}}void Eagle::stopDive() {isDiving false;position.dir E_UP; // 回到默认方向}EaglePosition Eagle::getPosition() const {return position;}bool Eagle::isCurrentlyDiving() const {return isDiving;}void Eagle::consumeEnergy(int amount) {energy max(0, energy - amount);}void Eagle::restoreEnergy(int amount) {energy min(100, energy amount);}void Eagle::reset(int startX, int startY) {position EaglePosition(startX, startY, E_UP);isDiving false;energy 100;}void Eagle::aiTrackTurtles(const std::vectorint turtleX, const std::vectorint turtleY) {if (isDiving || energy 30) return; // 俯冲中或能量不足时不追踪// 找到最近的海龟int eagleX position.x;int eagleY position.y;int closestDist 9999;int closestIndex 0;for (size_t i 0; i turtleX.size(); i) {if (turtleX[i] 0 turtleY[i] 0) continue; // 跳过无效位置int dx turtleX[i] - eagleX;int dy turtleY[i] - eagleY;int dist abs(dx) abs(dy); // 曼哈顿距离if (dist closestDist) {closestDist dist;closestIndex i;}}// 如果海龟在附近且不在边界自动朝向它移动if (closestDist 15 closestDist 2) {int dx turtleX[closestIndex] - eagleX;int dy turtleY[closestIndex] - eagleY;if (abs(dx) abs(dy)) {if (dx 0) {changeDirection(E_RIGHT);} else {changeDirection(E_LEFT);}} else {if (dy 0) {changeDirection(E_DOWN);} else {changeDirection(E_UP);}}}}turtle.cpp#include turtle.hTurtle::Turtle(int turtleId, int startX, int startY): position(startX, startY, ALIVE), speed(1), id(turtleId), hasReachedSea(false) {}Turtle::~Turtle() {// 清理资源}void Turtle::initialize() {position TurtlePosition(0, 0, ALIVE);speed 1;hasReachedSea false;}void Turtle::move(char direction) {if (!isAlive() || hasReachedSea) return;switch (direction) {case w: case W:position.y max(0, position.y - speed);break;case s: case S:position.y min(100, position.y speed); // 限制范围break;case a: case A:position.x max(0, position.x - speed);break;case d: case D:position.x min(100, position.x speed); // 限制范围break;}}void Turtle::getInjured() {position.state INJURED;}void Turtle::reachSafety() {position.state SAFE;hasReachedSea true;}TurtlePosition Turtle::getPosition() const {return position;}bool Turtle::isSafe() const {return position.state SAFE;}bool Turtle::isAlive() const {return position.state ALIVE;}void Turtle::reset(int startX, int startY) {position TurtlePosition(startX, startY, ALIVE);hasReachedSea false;}main.cpp#include game.h#include iostreamint main() {cout 老鹰抓海龟游戏 endl;cout 一个关于生存与追逐的冒险故事 endl;cout endl;Game game(60, 20); // 创建游戏实例char choice;do {game.initialize();game.run();if (game.getGameState() 1) {cout 恭喜海龟们成功逃脱了 endl;} else if (game.getGameState() 2) {cout 老鹰获得了胜利 endl;}cout 当前总得分: game.getScore() endl;cout 是否继续下一回合(y/n): ;cin choice;cin.ignore(); // 清除输入缓冲区} while ((choice y || choice Y) game.getGameState() ! 0);cout 感谢游玩老鹰抓海龟游戏 endl;cout 最终得分: game.getScore() endl;return 0;}3. README.md# 老鹰抓海龟游戏一个创新的追逐类游戏老鹰要在两只海龟逃向大海前抓住它们## 游戏特色- **双重挑战**两只海龟需要同时逃生- **智能追击**老鹰具备AI追踪能力- ⚡ **能量系统**老鹰俯冲消耗能量增加策略性- **生存机制**海龟到达大海即获胜- **回合制**多回合挑战积分累计关注我有更多实用程序等着你

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询