杠子老虎鸡虫 《python二维游戏编程》课后项目一

671 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路

《python二维游戏编程》项目一:杠子老虎鸡虫

V0.0.2.20210629


项目简介

《python二维游戏编程》课后项目1

适用于中国农业出版社,张太红主编,2015版本

本人不慎丢失了该书的光盘,怀疑第二章往后的模板在光盘中,如果你有光盘或者有本书的第二个项目往后的模板,我需要你的帮助

题目要求简介

在这里插入图片描述

源代码

import random

gustures = ['虫子', '鸡', '老虎', '杠子']


def name_to_number(name):
    if name in gustures:
        return gustures.index(name)
    else:
        return -1


def number_to_name(num):
    if num < gustures.__len__():
        return gustures[num]
    else:
        return '所喊无效!'


def shut_out(name):
    if name == '随机':
        return random.randint(0, 3)
    else:
        return name_to_number(name)


def play_one_round(player1_name, player1_code, player2_name, player2_code, print_msg=True):
    """

    :param player1_name:
    :param player2_name:
    :param player1_code:
    :param player2_code:
    :param print_msg:
    """
    if player1_code >= gustures.__len__():
        if print_msg:
            print(player1_name + '玩家所喊无效!')
        return -1

    if player2_code >= gustures.__len__():
        if print_msg:
            print(player2_name + '玩家所喊无效!')
        return -1

    code_res = player1_code - player2_code
    if code_res == 1 or code_res == -3:
        res = 1
    elif code_res == -1 or code_res == 3:
        res = 2
    else:
        res = 0

    if print_msg:
        print(player1_name + '喊的为:' + number_to_name(player1_code))
        print(player2_name + '喊的为:' + number_to_name(player2_code))
        if res == 0:
            print(player1_name + '和' + player2_name + '打成平手!')
        elif res == 1:
            print(player1_name + '获胜!')
        else:
            print(player2_name + '获胜!')

    return res


def probability_calculate():
    i = 0
    player_win = [0, 0, 0]

    while i < 128:
        play_res = play_one_round('甲', shut_out('随机'), '乙', shut_out('随机'), print_msg=False)
        player_win[play_res] += 1
        i += 1

    print('甲、乙随机比赛128次,验证对决结果的概率为')
    print('甲方获胜的概率为:%f' % (float(player_win[1] / (player_win[0] + player_win[1] + player_win[1]))))
    print('双方平局的概率为:%f' % (float(player_win[0] / (player_win[0] + player_win[1] + player_win[1]))))
    print('甲方失败的概率为:%f' % (float(player_win[2] / (player_win[0] + player_win[1] + player_win[1]))))


random.seed()
probability_calculate()

使用说明

环境依赖:python3

维护说明

注意

关于作者

Autho: KiraSkyler Email: kiraskyler@outlook.com / kiraskyler@qq.com

贡献者/贡献组织

鸣谢

版权信息

该项目签署了GPL 授权许可,详情请参阅官网

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see www.gnu.org/licenses/.

更新日志

  • V0.0.0.20210101