鱼C论坛

 找回密码
 立即注册
查看: 1185|回复: 7

图像用get_rect获得矩形后不能过随着图像一起移动

[复制链接]
发表于 2020-7-14 15:14:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import sys
import pygame
from pygame.locals import *

class Player():
    def __init__(self):
        self.MAXHP = 100 #生命上限
        self.HP = 100 #初始化当前生命
        self.MAXMP = 100 #魔法值上限
        self.MP = 100 #初始化当前魔法值
        self.EXP = 0 #初始化经验值
        self.LV = 1 #初始化登记
        self.PA = 50 #初始化物理攻击力
        self.MA = 50 #初始化魔法攻击力
        self.PD = 10 #初始化物理防御值
        self.MD = 10 #初始化魔法防御值
        self.dead = False
        self.playerX = 200 #初始X坐标
        self.playerY = 200 #初始Y坐标
        self.playerwalkforward = False #向前移动
        self.playerwalkback = False #向后移动
        self.playerwalkleft = False #向左移动
        self.playerwalright = False #向右移动
        self.speed = 5 #移动速度
        self.playerStatus = pygame.image.load('player.png') #加载任务图像
        self.playerRect = self.playerStatus.get_rect()
        #self.playerRect = pygame.Rect((self.playerX,self.playerY),(50,71)) #获取任务矩形
        #self.playerRect = pygame.Rect((200,200),(50,71))
    def playerUpdate(self):
        if self.playerwalkforward:
            self.playerY -= self.speed #向前移动
            print ('Y',self.playerY)
        elif self.playerwalkback:
            self.playerY += self.speed #向后移动
            print ('Y',self.playerY)
        elif self.playerwalkleft:
            self.playerX -= self.speed #向左移动
            print ('X',self.playerX)
        elif self.playerwalright:
            self.playerX += self.speed #向右移动
            print ('X',self.playerX)

            
class Monster():
    def __init__(self):
        self.MAXHP = 100
        self.HP = 100
        self.MAXMP = 100
        self.MP = 100
        self.EXP = 0
        self.LV = 1
        self.PA = 50
        self.MA = 50
        self.PD = 10 #初始化物理防御值
        self.MD = 10 #初始化魔法防御值
        #self.GU = GU
        self.dead = False
        self.monsterX = 100
        self.monsterY = 100
        self.monsterStatus = pygame.image.load('player.png')
        self.monsterRect = pygame.Rect((self.monsterX,self.monsterY),(50,71))

def createMap():
    screen.fill((255,255,255))
    screen.blit(pygame.image.load('Drawing1-Model2.png'),(0,0))#加载背景图片
    screen.blit(Monster.monsterStatus,(Monster.monsterX,Monster.monsterY))#加载怪物
    screen.blit(Player.playerStatus,(Player.playerX,Player.playerY))#加载任务
    Player.playerUpdate()
    pygame.display.update()
    pygame.display.flip()

def impactCheck():
    #Player.playerRect = pygame.Rect((Player.playerX,Player.playerY),(Player.playerStatus.get_width(),Player.playerStatus.get_height()))
    #Player.playerRect = Player.playerStatus.get_rect()
    #Monster.monsterRect = Monster.monsterStatus.get_rect()
    #print (Player.playerRect)
    #print (Monster.monsterRect)
    if Monster.monsterRect.colliderect(Player.playerRect):
        #fighting()
        i = True
        print (i)

def fighting():
    while True:
        if Player.dead == False and Monster.dead == False:
            if Player.PD >= Monster.PA:
                Player.HP = Player.HP
            else:
                Player.HP -= Monster.PA
            if Monster.PD >= Player.PA:
                Monster.HP = Monster.PD
            else:
                Monster.HP -= Player.PA
        else:
            break
   
if __name__ == '__main__':
    pygame.init()
    size = width,height = 800,800
    screen = pygame.display.set_mode(size)
    pygame.display.set_caption('魔塔')
    clock = pygame.time.Clock()
    Player = Player()
    Monster = Monster()
    impactCheck()
    while True:
        clock.tick(60)
        #impactCheck()
        createMap()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            # 在按下键盘时,设置player的属性为True
            elif event.type == KEYDOWN:
                if event.key == K_a or event.key == K_LEFT:
                    Player.playerwalkleft = True
                elif event.key == K_d or event.key == K_RIGHT:
                    Player.playerwalright = True
                elif event.key == K_w or event.key == K_UP:
                    Player.playerwalkforward = True
                elif event.key == K_s or event.key == K_DOWN:
                    Player.playerwalkback = True
                #elif event.key == K_SPACE:
                    #hero_temp.shoot() # 这里应该是飞机.显示子弹方法()
            # 在松开键盘时,设置player的属性为False
            elif event.type == KEYUP:
                if event.key == K_a or event.key == K_LEFT:
                    Player.playerwalkleft = False
                    print('m',Monster.monsterRect)
                    print('p',Player.playerRect)
                elif event.key == K_d or event.key == K_RIGHT:
                    Player.playerwalright = False
                    print('m',Monster.monsterRect)
                    print('p',Player.playerRect)
                elif event.key == K_w or event.key == K_UP:
                    Player.playerwalkforward = False
                    print('m',Monster.monsterRect)
                    print('p',Player.playerRect)
                elif event.key == K_s or event.key == K_DOWN:
                    Player.playerwalkback = False
                    print('m',Monster.monsterRect)
                    print('p',Player.playerRect)
            #else:
                #Player.playerwalkforward = False
                #createMap()
        #pygame.display.flip()

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-14 15:15:50 | 显示全部楼层
请不要重复发帖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 15:26:28 | 显示全部楼层
Hello. 发表于 2020-7-14 15:15
请不要重复发帖

有鱼友反应代码补全补发一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 15:27:39 | 显示全部楼层
bollice 发表于 2020-7-14 15:26
有鱼友反应代码补全补发一个

原帖编辑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 15:32:58 | 显示全部楼层

还不太会这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 15:45:37 | 显示全部楼层

原贴给你回复了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 15:47:11 | 显示全部楼层
yhhpf 发表于 2020-7-14 15:45
原贴给你回复了。

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 15:51:16 | 显示全部楼层

客气了,问题解决的话记得原贴给个最佳~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 02:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表