问题标题: CHATGPT做的离谱游戏

0
0
已解决
包涵宇
包涵宇
中级天翼
中级天翼


#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <ctime>

using namespace std;

const int MAP_WIDTH = 40;
const int MAP_HEIGHT = 20;

char map[MAP_HEIGHT][MAP_WIDTH];

int playerX, playerY;
int obstacleX, obstacleY;
int score = 0;

void initMap() {
    // 初始化地图边框
    for (int i = 0; i < MAP_HEIGHT; i++) {
        for (int j = 0; j < MAP_WIDTH; j++) {
            if (i == 0 || i == MAP_HEIGHT - 1 || j == 0 || j == MAP_WIDTH - 1) {
                map[i][j] = '#';
            } else {
                map[i][j] = ' ';
            }
        }
    }
}

void drawMap(char map[MAP_HEIGHT][MAP_WIDTH]) {
    // 输出地图
    system("cls");
    for (int i = 0; i < MAP_HEIGHT; i++) {
        for (int j = 0; j < MAP_WIDTH; j++) {
            cout << map[i][j];
        }
        cout << endl;
    }
    cout << "Score: " << score << endl;
}

void drawPlayer(char map[MAP_HEIGHT][MAP_WIDTH]) {
    // 在地图上打印玩家
    map[playerY][playerX] = 'O';
}

void clearPlayer(char map[MAP_HEIGHT][MAP_WIDTH]) {
    // 清除玩家上一帧的位置
    map[playerY][playerX] = ' ';
}

void updatePlayerPosition(int dx, int dy) {
    // 更新玩家位置
    int newX = playerX + dx;
    int newY = playerY + dy;
    if (newX >= 1 && newX <= MAP_WIDTH - 2) {
        playerX = newX;
    }
    if (newY >= 1 && newY <= MAP_HEIGHT - 2) {
        playerY = newY;
    }
}

void drawObstacle(char map[MAP_HEIGHT][MAP_WIDTH]) {
    // 在地图上打印障碍物
    map[obstacleY][obstacleX] = '*';
}

void clearObstacle(char map[MAP_HEIGHT][MAP_WIDTH]) {
    // 清除障碍物上一帧的位置
    map[obstacleY][obstacleX] = ' ';
}

void updateObstaclePosition() {
    // 更新障碍物位置
    obstacleX--;
    if (obstacleX < 1) {
        obstacleX = MAP_WIDTH - 2;
        obstacleY = rand() % (MAP_HEIGHT - 2) + 1;
    }
}

bool collisionDetection() {
    // 检测碰撞
    if (playerX == obstacleX && playerY == obstacleY) {
        return true;
    }
    return false;
}

int main() {
    // 初始化地图和玩家位置
    initMap();
    playerX = MAP_WIDTH / 2;
    playerY = MAP_HEIGHT / 2;
    // 初始化障碍物位置
    srand(time(NULL));
    obstacleX = rand() % (MAP_WIDTH - 2) + 1;
    obstacleY = MAP_HEIGHT / 2;
    bool gameOver = false;
    int speed = 50;
    while (!gameOver) {
        clearPlayer(map);
        clearObstacle(map);
        // 更新障碍物位置
        updateObstaclePosition();
        drawObstacle(map);
        drawPlayer(map);
        drawMap(map);
        // 检测碰撞
        if (collisionDetection()) {
            gameOver = true;
            cout << "Game Over! Your score is " << score << endl;
        }
        // 更新玩家位置
        if (GetAsyncKeyState(VK_LEFT) & 0x8000) {
            updatePlayerPosition(-1, 0);
        }
        if (GetAsyncKeyState(VK_RIGHT) & 0x8000) {
            updatePlayerPosition(1, 0);
        }
        if (GetAsyncKeyState(VK_UP) & 0x8000) {
            updatePlayerPosition(0, -1);
        }
        if (GetAsyncKeyState(VK_DOWN) & 0x8000) {
            updatePlayerPosition(0, 1);
        }
        // 逐渐加快游戏速度
        if (speed > 10) {
            speed--;
        }
        Sleep(speed);
        // 在通过障碍物时增加得分
        if (obstacleX == playerX) {
            score++;
        }
    }
    return 0;
} 

很离谱,不是吗???

包涵宇在2023-05-07 20:51:30追加了内容

没人吗???来回答结贴!!!


0
已采纳
岑墨
岑墨
资深光能
资深光能

我!(感谢大佬)

0
我要回答