基于Python实现人机PK小游戏

 更新时间:2023年06月09日 09:39:54   作者:小脆筒style  
这篇文章主要为大家详细介绍了如何基于Python实现人机PK小游戏,简单来说,就是随机生成玩家和敌人的属性,同时互相攻击,直至一方血量小于零,感兴趣的小伙伴可以学习一下

1. 明确项目目标

今天且让我扮演一下产品经理的角色。我们此次要实现的需求是:人机PK小游戏。具体效果请参照下面的示意动图。

简单来说,这个游戏中,会随机生成玩家和敌人的属性,同时互相攻击,直至一方血量小于零。

另外,这样的战斗会持续三局,采取三局两胜制,最后输出战斗结果,公布获胜方。

2. 分析过程,拆解项目

一个人机PK游戏最基础的元素是什么,我们可以拿最经典的拳皇游戏来脑补一下。

3. 逐步执行 代码实现

条件判断:

if 判断条件

4.版本1

import time,random
#存放玩家赢的局数,敌人赢的局数
player_victory = 0
enemy_victory = 0
for i in range(1,4):
    time.sleep(2)  # 让局与局之间有较明显的有时间间隔
    print(' \n——————现在是第'+str(i)+'局——————')  # 作为局的标记
    player_life = random.randint(100,150)
    player_attack = random.randint(30,50)
    enemy_life = random.randint(100,150)
    enemy_attack = random.randint(30,50)
    # 展示双方角色的属性
    print('【玩家】\n'+'血量:'+str(player_life)+'\n攻击:'+str(player_attack))
    print('------------------------')
    time.sleep(1)
    print('【敌人】\n'+'血量:'+str(enemy_life)+'\n攻击:'+str(enemy_attack))
    print('------------------------')
    time.sleep(1)
    # 双方PK
    while player_life > 0 and enemy_life > 0:
        #【敌人】剩余血量=敌人当前血量-玩家攻击,【玩家】剩余血量=玩家当前血量-敌人攻击
        player_life = player_life - enemy_attack
        enemy_life = enemy_life - player_attack
        print('你发起了攻击,【敌人】剩余血量'+str(enemy_life))
        print('敌人向你发起了攻击,【玩家】剩余血量'+str(player_life))
        print('-----------------------')
        time.sleep(1.5)
    #打印最终战果
    if player_life > 0 and enemy_life <= 0:
        player_victory += 1
        print('敌人死翘翘了,你赢了!')
    elif player_life <= 0 and enemy_life > 0:
        enemy_victory += 1
        print('悲催,敌人把你干掉了!')
    else:
        print('哎呀,你和敌人同归于尽了!')
if player_victory > enemy_victory :
    time.sleep(1)
    print('【最终结果:你赢了!】')
elif enemy_victory > player_victory:
    print('【最终结果:你输了!】')
else: 
    print('【最终结果:平局!】')

5.版本2【格式化字符串 %】

我们可以把%想象成:图书馆里用来占位的一本书。先占一个位置,之后再填上实际的变量。举个例子:下面这两种写法是相同的,请你着重研究下第二行的语法。

print('血量:'+str(player_life)+' 攻击:'+str(player_attack))
print('血量:%s 攻击:%s' % (player_life,player_attack))

格式符%后面有一个字母s,这是一个类型码,用来控制数据显示的类型。

%s就表示先占一个字符串类型的位置。

占完位置之后,我们要以%的形式在后面补上要填充的内容,如此一来我们就免去了转换类型的烦恼。如果是多个数据,就要把它们放进括号,按顺序填充,用逗号隔开。

简化后的代码:

import time
import random
player_victory = 0
enemy_victory = 0
for i in range(1,4):
    time.sleep(1.5)
    print('  \n——————现在是第 %s 局——————' % i)
    player_life = random.randint(100,150)
    player_attack = random.randint(30,50)
    enemy_life = random.randint(100,150)
    enemy_attack = random.randint(30,50)
    print('【玩家】\n血量:%s\n攻击:%s' % (player_life,player_attack))
    print('------------------------')
    time.sleep(1)
    print('【敌人】\n血量:%s\n攻击:%s' % (enemy_life,enemy_attack))
    print('-----------------------')
    time.sleep(1)
    while player_life > 0 and enemy_life > 0:
        player_life = player_life - enemy_attack 
        enemy_life = enemy_life - player_attack
        print('你发起了攻击,【敌人】剩余血量%s' % enemy_life)
        print('敌人向你发起了攻击,【玩家】的血量剩余%s' % player_life)
        print('-----------------------')
        time.sleep(1.2)
    if player_life > 0 and enemy_life <= 0:
        player_victory += 1
        print('敌人死翘翘了,你赢了!')
    elif player_life <= 0 and enemy_life > 0:
        enemy_victory += 1
        print('悲催,敌人把你干掉了!')
    else:
        print('哎呀,你和敌人同归于尽了!')
if player_victory > enemy_victory :
    time.sleep(1)
    print('\n【最终结果:你赢了!】')
elif enemy_victory > player_victory:
    print('\n【最终结果:你输了!】')
else: 
    print('\n【最终结果:平局!】')

以上就是基于Python实现人机PK小游戏的详细内容,更多关于Python人机PK游戏的资料请关注脚本之家其它相关文章!

相关文章

  • Python常用基础模块之os.path模块详解

    Python常用基础模块之os.path模块详解

    这篇文章主要介绍了Python常用基础模块之os.path模块详解,os模块的子模块os.path 是专门用于进行路径操作的模块,常用的路径操作主要有判断目录是否存在、创建目录、删除目录和遍历目录等,需要的朋友可以参考下
    2023-08-08
  • python基础详解之if循环语句

    python基础详解之if循环语句

    这篇文章主要介绍了python基础详解之if循环语句,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助需要的朋友可以参考下
    2021-04-04
  • Python 常用模块 re 使用方法详解

    Python 常用模块 re 使用方法详解

    这篇文章主要介绍了Python 常用模块 re 使用方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Python基础知识之变量的详解

    Python基础知识之变量的详解

    这篇文章主要介绍了Python基础知识之变量的详解,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • 基于Python实现Word转HTML

    基于Python实现Word转HTML

    将Word转换为HTML能将文档内容发布在网页上,这样,用户就可以通过浏览器直接查看或阅读文档而无需安装特定的软件,下面我们就来学习一下Python是如何实现Word转HTML的吧
    2023-12-12
  • Python numpy.transpose使用详解

    Python numpy.transpose使用详解

    本文主要介绍了Python numpy.transpose使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 用python画城市轮播地图

    用python画城市轮播地图

    轮播地图可以在很多方面有实际应用,所以就介绍给大家,并给出个实际操作案例,感兴趣的朋友可以参考下
    2021-05-05
  • freeswitch开源通信 python模块介绍

    freeswitch开源通信 python模块介绍

    freeswitch支持多种语言的业务开发,包括C/C++,java,python,js,lua,Golang等等。freeswitch在使用python做业务开发时,有俩种接入方式,一种是ESL接口,另一种是mod_python模块。本文主要介绍的是fs内部的mod_python语言支持模块,需要的朋友可以参考下面文章内容
    2021-09-09
  • pygame游戏之旅 按钮上添加文字的方法

    pygame游戏之旅 按钮上添加文字的方法

    这篇文章主要为大家详细介绍了pygame游戏之旅的第11篇,按钮上添加文字的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • python获取当前运行函数名称的方法实例代码

    python获取当前运行函数名称的方法实例代码

    这篇文章主要介绍了python获取当前运行函数名称的方法实例代码的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论