Python有趣的小游戏(Python系列08)

前言:一直学也不是个事,这个时候我们应该停下来,把我们前面所学的知识串起来,看看自己能实现什么样的功能,这里我想到两个有趣的程序,大家快来试试吧!

目录

1.石头剪刀布

2.斗地主发牌


1.石头剪刀布

        要求:题目1: 石头剪刀布
                游戏开始,初始状态下用户和电脑都有 100 分,赢一局+10 分,输一局-10 分
                当用户为 0 分时,游戏结束,提示游戏结束,比赛输了
                当用户为 200 分时,游戏结束,提示游戏结束,赢得比赛、每轮比赛都输出当前的分数
                1 代表石头 2 代表剪刀 3 代表布
                提示:本题所用到的知识点random,前面没有提到过。
                导入random
                import random as rd
                computer_num = rd.randint(1, 3) #用来随机生成1 ~ 3之间的数字

        运行图:Python有趣的小游戏(Python系列08)_第1张图片

        我这里为了快点胜利设置的是玩家胜利加50分

        游戏代码:

"""
题目 1: 石头剪刀布
游戏开始,初始状态下用户和电脑都有 100 分,赢一局+10 分,输一局-10 分
当用户为 0 分时,游戏结束,提示游戏结束,比赛输了
当用户为 200 分时,游戏结束,提示游戏结束,赢得比赛、每轮比赛都输出当前的分数
。1 代表石头 2 代表剪刀 3 代表布
提示:本题所用到的知识点random,前面没有提到过。
导入random
import random as rd
computer_num = rd.randint(1, 3) #用来随机生成1 ~ 3之间的数字
"""
# 导入random模块
import random as rd

# 设置电脑与玩家的初始分数
computer_score = 100  # 电脑分数
player_score = 100  # 玩家分数

# 设置玩家与电脑获胜分别获得对方多少分
computer_victory = 10  # 电脑获胜
player_victory = 50  # 玩家获胜

# 设置数字对应的拳法
rule = {1: '石头', 2: '剪刀', 3: '布'}

# 开始游戏
restart = True  # 用来判断电脑是否需要重新出拳
computer_num = 1
while True:
    if restart:
        # 电脑开始出拳
        print('------电脑开始出拳------')
        print('----------------------')
        computer_num = rd.randint(1, 3)
        print('------电脑出拳完毕------')
        # 玩家开始出拳
    try:
        player_num = int(input("请玩家出拳(1:石头,2:剪刀,3:布):"))
        # 玩家数字不在出拳范围
        if player_num > 3 or player_num < 1:
            # 玩家出拳错误
            print("------玩家出拳错误------")
            # 电脑不需要再重新出拳
            restart = False
            continue  # 这段代码和下面有一段代码重复(这是程序员的大忌),后续可以用函数处理现在就不处理了
        restart = True  # 玩家出拳成功,电脑重新出拳
        """
            石头剪刀布的算法
            找规律
            玩家 1  电脑 2
            玩家 2  电脑 3
            玩家 3  电脑 1
            这种情况都是玩家胜利
            用玩家的出拳数减去电脑的,得到的结果是 -1 或者 2
            所以可以得到算法,player_num - computer_num in [-1, 2] 玩家获胜
            player_num - computer_num == 0 平局
            反之 电脑获胜
            (也可以用一个一个的if来判断谁获胜)
        """
        print('玩家:', rule[player_num], ' VS ', rule[computer_num], ':电脑')
        if (player_num - computer_num) in [-1, 2]:
            print('--------玩家获胜--------')
            # 加分程序
            player_score += player_victory
            computer_score -= player_victory
        elif player_num - computer_num == 0:
            print('----------平局----------')
        else:
            print('--------电脑获胜--------')
            # 加分程序
            player_score -= computer_victory
            computer_score += computer_victory
        # 显示当前分数
        print('----------------------------')
        print('玩家分数:', player_score)
        print('电脑分数:', computer_score)
        print('----------------------------')
        # 判断游戏是否结束
        if player_score <= 0:
            print("游戏结束,电脑获胜!")
            break
        if computer_score <= 0:
            print("游戏结束,玩家获胜!")
            break

    except:
        # 玩家出拳错误
        print("------玩家出拳错误------")
        # 电脑不需要再重新出拳
        restart = False
        continue

# 本段代码中用到的是for循环+if, 有部分代码重复,后续可以用面向对象的思想来改善。还有提示信息也可以扩展的更好,更像一个游戏。
2.斗地主发牌

        要求:做出斗地主发牌的效果

        提示:random.shuffel(列表)能将列表打乱,sorted()内置函数能排序列表。

        效果图:

Python有趣的小游戏(Python系列08)_第2张图片

游戏代码:

"""
斗地主,发牌功能
"""
import random as rd

# 牌库
card_dict = {0: '♦3', 1: '♣3', 2: '♥3', 3: '♠3', 4: '♦4', 5: '♣4', 6: '♥4', 7: '♠4',
             8: '♦5', 9: '♣5', 10: '♥5', 11: '♠5', 12: '♦6', 13: '♣6', 14: '♥6', 15: '♠6',
             16: '♦7', 17: '♣7', 18: '♥7', 19: '♠7', 20: '♦8', 21: '♣8', 22: '♥8', 23: '♠8',
             24: '♦9', 25: '♣9', 26: '♥9', 27: '♠9', 28: '♦10', 29: '♣10', 30: '♥10', 31: '♠10',
             32: '♦J', 33: '♣J', 34: '♥J', 35: '♠J', 36: '♦Q', 37: '♣Q', 38: '♥Q', 39: '♠Q',
             40: '♦K', 41: '♣K', 42: '♥K', 43: '♠K', 44: '♦A', 45: '♣A', 46: '♥A', 47: '♠A',
             48: '♦2', 49: '♣2', 50: '♥2', 51: '♠2', 52: '小王', 53: '大王'}

# 玩家
play1 = {}
play2 = {}
play3 = {}
# 地主牌
landlord_card = {}

a = []
# 发牌算法
# 1.洗牌
list_card = list(card_dict.items())
rd.shuffle(list_card)
# 2.发牌
count = 0
for i in list_card:
    if count > 50:
        landlord_card[i[0]] = i[1]
        continue
    if count % 3 == 0:
        play1[i[0]] = i[1]
    elif count % 3 == 1:
        play2[i[0]] = i[1]
    else:
        play3[i[0]] = i[1]
    count += 1
# 给玩家的牌进行排序
play1 = {k: play1[k] for k in sorted(play1.keys(), reverse=True)}
play2 = {k: play2[k] for k in sorted(play2.keys(), reverse=True)}
play3 = {k: play3[k] for k in sorted(play3.keys(), reverse=True)}
print(' '.join(list(play1.values())))
print(' '.join(list(play2.values())))
print(' '.join(list(play3.values())))
print(' '.join(list(landlord_card.values())))

你可能感兴趣的:(python,服务器,开发语言)