bollice 发表于 2020-7-14 15:14:52

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

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()

Hello. 发表于 2020-7-14 15:15:50

请不要重复发帖

bollice 发表于 2020-7-14 15:26:28

Hello. 发表于 2020-7-14 15:15
请不要重复发帖

有鱼友反应代码补全补发一个{:5_91:}

Hello. 发表于 2020-7-14 15:27:39

bollice 发表于 2020-7-14 15:26
有鱼友反应代码补全补发一个

原帖编辑

bollice 发表于 2020-7-14 15:32:58

Hello. 发表于 2020-7-14 15:27
原帖编辑

还不太会这个{:5_99:}

yhhpf 发表于 2020-7-14 15:45:37

bollice 发表于 2020-7-14 15:32
还不太会这个

原贴给你回复了。

bollice 发表于 2020-7-14 15:47:11

yhhpf 发表于 2020-7-14 15:45
原贴给你回复了。

感谢

yhhpf 发表于 2020-7-14 15:51:16

bollice 发表于 2020-7-14 15:47
感谢

客气了,问题解决的话记得原贴给个最佳~{:10_256:}
页: [1]
查看完整版本: 图像用get_rect获得矩形后不能过随着图像一起移动