python大富翁

该博客介绍了使用Python编程实现大富翁游戏的过程,包括初始化模块、定义Player类和Building类,以及实现带透明度的绘图方法。玩家类中包含了游戏元素如金钱、位置、骰子值等属性,而建筑类则包含名称、价格、位置等信息。文章还提到了一个主函数来运行游戏。
摘要由CSDN通过智能技术生成

初始化各种模块

import pygame
import random
import sys

定义类

class Player():
def init(self, image, name, isPlayer):
self.name = name
self.money = 10000
self.isGoingToMove = False
self.movable = True
self.image = image
self.position = 0
self.temp_position = False
self.dice_value = 0
self.locatedBuilding = 0
self.showText = []
self.isPlayer = isPlayer
self.ownedBuildings = []
self.isShowText = False
self.soundPlayList = 0
self.caishen = 0
self.shuaishen = 0
self.tudishen = 0
self.pohuaishen = 0

def judgePosition(self, buildings):  # 位置判断 返回值是所在位置的建筑
    for each in buildings:
        for every in each.location:
            if self.position == every:
                return each

        # 当使用元组时 当元组中只有一个元素时 发现该元素不可迭代
        # 出现错误 换成列表后解决
        ''' 
        try:
            for every in each.location:
                if self.position == every:
                    print(each.name)
        except:
            if self.position == every:
                print(each.name)
        '''

def buyaBuilding(self, isPressYes):  # 购买方法
    if isPressYes and self.locatedBuilding.owner != self.name:
        self.locatedBuilding.owner = self.name
        self.locatedBuilding.wasBought = True
        self.ownedBuildings.append(self.locatedBuilding)
        self.money -= self.locatedBuilding.price
        self.showText = [self.name + '购买了' + self.locatedBuilding.name + '!']
        self.soundPlayList = 1
        return True
    else:
        return False

def addaHouse(self, isPressYes):  # 在建筑物上添加一个房子
    try:
        if isPressYes and self.locatedBuilding.owner == self.name:
            self.locatedBuilding.builtRoom += 1
            self.money -= self.locatedBuilding.payment
            self.showText = [self.name + '在' + self.locatedBuilding.name + '上!', '盖了一座房子!', \
                             '有%d' % self.locatedBuilding.builtRoom + '个房子了!', \
                             "它的过路费是%d" % (self.locatedBuilding.payment * \
                                           (self.locatedBuilding.builtRoom + 1))]
            self.soundPlayList = 2
            return True
        else:
            return False
    except:
        pass

def move(self, buildings, allplayers):  # 移动方法 返回值是所在的建筑位置
    self.dice_value = random.randint(1, 6)
    self.position += self.dice_value
    if self.position >= 16:
        self.position -= 16
    self.locatedBuilding = self.judgePosition(buildings)
    self.isShowText = True
    return self.eventInPosition(allplayers)

def eventInPosition(self, allplayers):  # 判断在建筑位置应该发生的事件
    building = self.locatedBuilding
    if building.name != '空地':
        if self.locatedBuilding.wasBought == False:  # 未购买的时候显示建筑的数据!
            if self.isPlayer == True:
                textLine0 = self.name + '扔出了' + '%d' % self.dice_value + '点!'
                textLine1 = self.name + '来到了' + building.name + '!'
                textLine2 = '购买价格:%d' % building.price
                textLine3 = '过路收费:%d' % building.payment
                textLine4 = '是否购买?'
                self.showText = [textLine0, textLine1, textLine2, textLine3, textLine4]
                return True
            else:
                self.addaHouse(not self.buyaBuilding(True))

            # ----- 动画 -------
            # ----- 是否购买 ------
        elif building.owner == self.name:  # 路过自己的房子开始加盖建筑!
            if self.pohuaishen == 1:
                textLine0 = self.name + '破坏神附体!'
                textLine1 = '摧毁了自己的房子!'
                building.owner = 'no'
                building.wasBought = False
                self.showText = [textLine0, textLine1]
                self.pohuaishen = 0
            else:
                if self.isPlayer == True:
                    textLine0 = self.name + '扔出了' + '%d' % self.dice_value + '点!'
                    textLine1 = '来到了ta的' + self.locatedBuilding.name + '!'
                    textLine2 = '可以加盖小房子!'
                    textLine3 = '加盖收费:%d' % building.payment
                    textLine4 = '是否加盖?'
                    self.showText = [textLine0, textLine1, textLine2, textLine3, textLine4]
                    return True
                # ----- 动画-------
                else:
                    self.addaHouse(True)
        else:
            for each in allplayers:  # 被收费!
                if self.locatedBuilding.owner == each.name and each.name != self.name:
                    if self.caishen == 1:
                        textLine0 = self.name + '财神附体&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值