《孙悟空大战白骨精》小游戏

一款简单的文字冒险游戏,玩家可以选择角色并进行战斗。通过选择不同的行动来提升自己的属性或者直接挑战boss。游戏包括练级、攻击boss和逃跑等选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   -显示欢迎信息
   -显示身份选择的信息
   -游戏的身份选择
   -根据用户的选择来显示不同的提示信息
   -进入游戏
   -创建变量,来保存玩家的生命值和攻击力
   -创建一个变量,保存boss的生命值和攻击力
   -显示玩家的信息(攻击力、生命值)
   -由于游戏选项是需要反复显示的,所以必须将其编写到一个循环中
       显示游戏选项,游戏正式开始
       处理用户的选择
           玩家攻击boss
           减去boss的生命值,减去的生命值应该等于玩家的攻击力
           检查boss是否死亡
              游戏结束
              break
           boss要反击玩家
           减去玩家的生命值
           检查玩家是否死亡
               玩家死亡
               游戏结束
               break
           逃跑,退出游戏

 

详细代码

print('-' * 20, '欢迎关临《孙悟空大战白骨精》', '-' * 20)
print('请输入你的身份:')
print("\t1.孙悟空")
print('\t2.白骨精')
player_choose = input('请输入[1,2]:')
print('-'*60)
if player_choose == '1' :
    print('你已经选择了1,你将以->孙悟空<-的身份来进行游戏!')
elif player_choose == '2':
    print('你竟然选择了白骨精,太不要脸了,我强制你以->孙悟空<-的身份来进行游戏!')
else :
    print('你的输入有误,系统将自动分配身份,你将以->唐僧<-的身份来进行游戏!')
# 孙悟空的生命力和攻击力
player_life = 2 # 生命力
player_attack = 2 # 攻击力
# boss白骨精的生命力和攻击力
boss_life = 10
boss_attack = 10
print('-'*66)
print(f'孙悟空,你的生命力是{player_life} , 你的攻击力是 {player_attack}')
while True :
    print('-'*60)
    print('请选择你要进行的操作:')
    print('\t1.练级')
    print('\t2.打BOSS')
    print('\t3.逃跑')
    game_choose = input('请选择要做的操作[1-3]:')
    if game_choose == '1':
        player_life += 2
        player_attack += 2
        print('-' * 66)
        print(f'恭喜你升级了!,你现在的生命值是 {player_life} , 你的攻击力是 {player_attack}')
    elif game_choose == '2':
        print('-' * 66)
        boss_life -= player_attack
        print('->孙悟空<- 使用三味真火攻击了 ->白骨精<-')
        if boss_life <= 0:
            print(f'->白骨精<-受到了 {player_attack} 点伤害,重伤不治死了,->孙悟空<-赢得了胜利!')
            break
        player_life -= boss_attack
        print(' ->白骨精<- 白骨爪攻击了 ->孙悟空<-')
        if player_life <= 0:
            print(f'你受到了 {boss_attack} 点伤害,重伤不治死了!GAME OVER')
            break
    elif game_choose == '3' :
        print('-' * 60)
        print('->孙悟空<-这个怂包,骑着跟斗云跑了!GAME OVER')
        break
    else :
        print('-'*66)
        print('你的输入有误,请重新输入!')
print('游戏结束了')

孙悟空三打白骨精是一款经典的游戏,其代码由多个文件组成,主要包括游戏引擎、角色控制、碰撞检测、音效播放等模块。以下是部分代码示例: 1. 游戏引擎模块: ``` class GameEngine { public: GameEngine(); ~GameEngine(); void init(); void run(); void update(); void render(); private: bool m_running; SDL_Window* m_window; SDL_Renderer* m_renderer; Player* m_player; Enemy* m_enemy; ... }; GameEngine::GameEngine() { m_running = false; } GameEngine::~GameEngine() { SDL_DestroyRenderer(m_renderer); SDL_DestroyWindow(m_window); SDL_Quit(); } void GameEngine::init() { SDL_Init(SDL_INIT_EVERYTHING); m_window = SDL_CreateWindow("Sun Wukong 3", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); m_renderer = SDL_CreateRenderer(m_window, -1, SDL_RENDERER_ACCELERATED); m_player = new Player(m_renderer); m_enemy = new Enemy(m_renderer); } void GameEngine::run() { m_running = true; while (m_running) { update(); render(); } } void GameEngine::update() { m_player->update(); m_enemy->update(); ... } void GameEngine::render() { SDL_RenderClear(m_renderer); m_player->render(); m_enemy->render(); ... SDL_RenderPresent(m_renderer); } ``` 2. 角色控制模块: ``` class Player { public: Player(SDL_Renderer* renderer); ~Player(); void update(); void render(); private: int m_x, m_y; int m_speed; SDL_Texture* m_texture; }; Player::Player(SDL_Renderer* renderer) { m_x = SCREEN_WIDTH / 2 - PLAYER_WIDTH / 2; m_y = SCREEN_HEIGHT - PLAYER_HEIGHT - 50; m_speed = 5; SDL_Surface* surface = IMG_Load("player.png"); m_texture = SDL_CreateTextureFromSurface(renderer, surface); } Player::~Player() { SDL_DestroyTexture(m_texture); } void Player::update() { const Uint8* state = SDL_GetKeyboardState(NULL); if (state[SDL_SCANCODE_LEFT] && m_x > 0) { m_x -= m_speed; } if (state[SDL_SCANCODE_RIGHT] && m_x < SCREEN_WIDTH - PLAYER_WIDTH) { m_x += m_speed; } } void Player::render() { SDL_Rect rect = {m_x, m_y, PLAYER_WIDTH, PLAYER_HEIGHT}; SDL_RenderCopy(renderer, m_texture, NULL, &rect); } ``` 3. 碰撞检测模块: ``` bool check_collision(SDL_Rect a, SDL_Rect b) { int left_a = a.x; int right_a = a.x + a.w; int top_a = a.y; int bottom_a = a.y + a.h; int left_b = b.x; int right_b = b.x + b.w; int top_b = b.y; int bottom_b = b.y + b.h; if (bottom_a <= top_b) { return false; } if (top_a >= bottom_b) { return false; } if (right_a <= left_b) { return false; } if (left_a >= right_b) { return false; } return true; } ``` 4. 音效播放模块: ``` Mix_Chunk* sound_effect; sound_effect = Mix_LoadWAV("explosion.wav"); Mix_PlayChannel(-1, sound_effect, 0); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小肝帝!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值