用python实现简单飞行棋

本人刚开始学习python,看了一段时间视频教程之后,决定做一个小游戏来巩固一下知识点,就做了一个文字版飞行棋,暂不具备图形界面。把代码贴出来,给自己留个标记。

chess_main.py
import chess_tools

# 输入玩家信息
chess_tools.input_player()

while chess_tools.end_flag:
    for player in chess_tools.player_list:
        chess_tools.ironman(player)
        input(player["name"]+",请按enter掷骰子")
        chess_tools.throw(player)
        if chess_tools.judge(player) == 1:
            break
        chess_tools.hit(player)
        chess_tools.speedup(player)
        print("")


chess_tools.py
from random import randint


player_list = []
end_flag = 1


def input_player():
    num = input("数据玩家数量:")
    i = 0
    while i < int(num):
        player_name = input("输入第" + str(i + 1) + "位玩家名字:")
        play_info = {"name": player_name,
                     "score": 0}
        player_list.append(play_info)
        i = i + 1


def throw(player):
    """
    玩家扔骰子,随机1-6点
    :param player: 当前玩家
    :return:
    """
    points = randint(1,6)

    # 首先判定是否起飞
    if player["score"] == 0 and points == 6:
        player["score"] = 1
        print("%d 点,恭喜起飞!当前在第%d格" % (points, player["score"]))

    elif player["score"] == 0 and points < 6:
        print("%d 点,起飞失败!" % points)
        return
    # 分数大于100,要后退,多几分退几步
    elif player["score"] + points > 100:
        player["score"] = player["score"] - (player["score"]+ points) % 100 + 1
        print("%d 点,飞过头了!回到%d格" % (points,player["score"]))
    else:
        player["score"] += points
        print("%d 点!当前在第%d格" % (points, player["score"]))


def judge(player):
    global end_flag
    if player["score"] == 100:
        end_flag = 0
        print(player["name"]+"赢了")
        return 1


def hit(player):
    """
    判断当前玩家是否会将领先的玩家撞回起飞位置
    :param player: 当前玩家名字
    """
    for other_player in player_list:
        if player["score"] == other_player["score"] \
                and other_player["name"] != player["name"]:
            other_player["score"] = 0


def speedup(player):
    if player["score"] == 15 or \
            player["score"] == 35 or \
            player["score"] == 85:
        player["score"] += 5
        print("加速5格,当前在%d格" % player["score"])


def ironman(player):
    """
    主角光环,名字中含有指定字符的人可以获得50分加成
    :param player:当前玩家的名字
    """
    master = player["name"].count("t")
    if  master > 0 and player["score"] == 0:
        player["score"] = 50
        print("- I am Iron Man!贾维斯,先给我加50分。")
        print("- 好的,%s 。当前已走到第50格。" % player["name"])
        print("")

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值