200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python联机游戏制作_Python练习01-对战小游戏

python联机游戏制作_Python练习01-对战小游戏

时间:2023-01-23 06:06:25

相关推荐

python联机游戏制作_Python练习01-对战小游戏

Python练习01-对战小游戏

近期在学习Python,其中有一道练习题,写一个对战小游戏,随机人物,随机属性(血量、攻击)、指定我方人物出场顺序,三局两胜,代码如下:

import

time, random

# 需要的数据和变量放在开头

player_list = [

'【鸣人】', '【佐助】', '【小樱】', '【卡卡西】', '【凯】', '【宁次】','【小李】','【大和】']

enemy_list = [

'【带土】', '【鼬】', '【飞段】', '【角都】', '【长门】', '【鬼鲛】','【蝎】','【迪达拉】']

players = random.sample(player_list, 3)

enemies = random.sample(enemy_list, 3)

player_info = {}

enemy_info = {}

# 随机生成角色的属性

def born_role():

life = random.randint(100, 180)

attack = random.randint(30, 50)

return life, attack

# 生成和展示角色信息

def show_role():

for i in range(3):

player_info[players[i]] = born_role()

enemy_info[enemies[i]] = born_role()

# 展示我方的3个角色

print('----------------- 角色信息 -----------------')

print('你的人物:')

for i in range(3):

print('%s 血量:%d 攻击:%d'

% (players[i], player_info[players[i]][0], player_info[players[i]][1]))

print('--------------------------------------------')

print('电脑敌人:')

# 展示敌方的3个角色

for i in range(3):

print('%s 血量:%d 攻击:%d'

% (enemies[i], enemy_info[enemies[i]][0], enemy_info[enemies[i]][1]))

print('--------------------------------------------')

#input('请按回车键继续。\n') # 为了让玩家更有控制感,可以插入类似的代码来切分游戏进程。

# 角色排序,选择出场顺序。

def order_role():

global players

order_dict = {}

for i in range(3):

order = int(input('你想将 %s 放在第几个上场?(输入数字1~3)' % players[i]))

order_dict[order] = players[i]

players = []

for i in range(1, 4):

players.append(order_dict[i])

print('\n我方角色的出场顺序是:%s、%s、%s' % (players[0], players[1], players[2]))

print('敌方角色的出场顺序是:%s、%s、%s' % (enemies[0], enemies[1], enemies[2]))

# 角色PK

def pk_role():

round = 1

score = 0

for i in range(3): # 一共要打三局

player_name = players[i]

enemy_name = enemies[i]

player_life = player_info[players[i]][0]

player_attack = player_info[players[i]][1]

enemy_life = enemy_info[enemies[i]][0]

enemy_attack = enemy_info[enemies[i]][1]

# 每一局开战前展示战斗信息

print('\n----------------- 【第%d局】 -----------------' % round)

print('玩家角色:%s vs 敌方角色:%s ' % (player_name, enemy_name))

print('%s 血量:%d 攻击:%d' % (player_name, player_life, player_attack))

print('%s 血量:%d 攻击:%d' % (enemy_name, enemy_life, enemy_attack))

print('--------------------------------------------')

input('请按回车键继续。\n')

# 开始判断血量是否都大于零,然后互扣血量。

while player_life > 0 and enemy_life > 0:

enemy_life = enemy_life - player_attack

player_life = player_life - enemy_attack

print('%s发起了攻击,%s剩余血量%d' % (player_name, enemy_name, enemy_life))

print('%s发起了攻击,%s剩余血量%d' % (enemy_name, player_name, player_life))

print('--------------------------------------------')

time.sleep(1)

else: # 每局的战果展示,以及分数score和局数的变化。

# 调用show_result()函数,打印返回元组中的result。

print(show_result(player_life, enemy_life)[1])

# 调用show_result()函数,完成计分变动。

score += int(show_result(player_life, enemy_life)[0])

round += 1

input('\n点击回车,查看比赛的最终结果\n')

if score > 0:

print('【最终结果:你赢了!】\n')

elif score < 0:

print('【最终结果:你输了!】\n')

else:

print('【最终结果:平局!】\n')

# 返回单局战果和计分法所加分数。

def show_result(player_life, enemy_life): # 注意:该函数要设定参数,才能判断单局战果。

if player_life > 0 and enemy_life <= 0:

result = '\n敌人死翘翘了,你赢了!'

return 1, result # 返回元组(1,'\n敌人死翘翘了,你赢了!'),类似角色属性的传递。

elif player_life <= 0 and enemy_life > 0:

result = '\n悲催,敌人把你干掉了!'

return -1, result

else:

result = '\n哎呀,你和敌人同归于尽了!'

return 0, result

# (主函数)展开战斗流程

def main():

show_role()

order_role()

pk_role()

# 启动程序(即调用主函数)

main()

运行结果如下:

----------------- 角色信息 -----------------

你的人物:

【宁次】 血量:119 攻击:31

【大和】 血量:128 攻击:41

【佐助】 血量:145 攻击:30

--------------------------------------------

电脑敌人:

【角都】 血量:176 攻击:41

【鼬】 血量:129 攻击:45

【飞段】 血量:140 攻击:39

--------------------------------------------

你想将 【宁次】 放在第几个上场?(输入数字1~3)1

你想将 【大和】 放在第几个上场?(输入数字1~3)3

你想将 【佐助】 放在第几个上场?(输入数字1~3)2

我方角色的出场顺序是:【宁次】、【佐助】、【大和】

敌方角色的出场顺序是:【角都】、【鼬】、【飞段】

----------------- 【第1局】 -----------------

玩家角色:【宁次】 vs 敌方角色:【角都】

【宁次】 血量:119 攻击:31

【角都】 血量:176 攻击:41

--------------------------------------------

请按回车键继续。

【宁次】发起了攻击,【角都】剩余血量145

【角都】发起了攻击,【宁次】剩余血量78

--------------------------------------------

【宁次】发起了攻击,【角都】剩余血量114

【角都】发起了攻击,【宁次】剩余血量37

--------------------------------------------

【宁次】发起了攻击,【角都】剩余血量83

【角都】发起了攻击,【宁次】剩余血量-4

--------------------------------------------

悲催,敌人把你干掉了!

----------------- 【第2局】 -----------------

玩家角色:【佐助】 vs 敌方角色:【鼬】

【佐助】 血量:145 攻击:30

【鼬】 血量:129 攻击:45

--------------------------------------------

请按回车键继续。

【佐助】发起了攻击,【鼬】剩余血量99

【鼬】发起了攻击,【佐助】剩余血量100

--------------------------------------------

【佐助】发起了攻击,【鼬】剩余血量69

【鼬】发起了攻击,【佐助】剩余血量55

--------------------------------------------

【佐助】发起了攻击,【鼬】剩余血量39

【鼬】发起了攻击,【佐助】剩余血量10

--------------------------------------------

【佐助】发起了攻击,【鼬】剩余血量9

【鼬】发起了攻击,【佐助】剩余血量-35

--------------------------------------------

悲催,敌人把你干掉了!

----------------- 【第3局】 -----------------

玩家角色:【大和】 vs 敌方角色:【飞段】

【大和】 血量:128 攻击:41

【飞段】 血量:140 攻击:39

--------------------------------------------

请按回车键继续。

【大和】发起了攻击,【飞段】剩余血量99

【飞段】发起了攻击,【大和】剩余血量89

--------------------------------------------

【大和】发起了攻击,【飞段】剩余血量58

【飞段】发起了攻击,【大和】剩余血量50

--------------------------------------------

【大和】发起了攻击,【飞段】剩余血量17

【飞段】发起了攻击,【大和】剩余血量11

--------------------------------------------

【大和】发起了攻击,【飞段】剩余血量-24

【飞段】发起了攻击,【大和】剩余血量-28

--------------------------------------------

哎呀,你和敌人同归于尽了!

点击回车,查看比赛的最终结果

【最终结果:你输了!】

Process finished with exit code 0

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。