鱼C论坛

 找回密码
 立即注册
查看: 1396|回复: 11

[已解决]为什么用get_rect方法或的的矩形 不能够随着图像移动而移动呢?

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

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

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

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

    def playerUpdate(self):
        if self.playerwalkforward:
            self.playerY -= self.speed #向前移动
            print (self.playerY)
        elif self.playerwalkback:
            self.playerY += self.speed #向后移动
        elif self.playerwalkleft:
            self.playerX -= self.speed #向左移动
        elif self.playerwalright:
            self.playerX += self.speed #向右移动
最佳答案
2020-7-14 15:42:39
下面是在你基础上改的,图片名称你自己换下,代码里加了几个print输出验证的,你自己删掉。
import sys
import pygame
from pygame.locals import *


class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__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('code.jpg')  # 加载任务图像
        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  # 向前移动
            self.playerRect = self.playerRect.move([0,self.speed])
            print('Y', self.playerY)
            print(self.playerStatus.get_rect())
        elif self.playerwalkback:
            #self.playerY += self.speed  # 向后移动
            self.playerRect = self.playerRect.move([0, -self.speed])
            print('Y', self.playerY)
            print(self.playerStatus.get_rect())
        elif self.playerwalkleft:
            #self.playerX -= self.speed  # 向左移动
            self.playerRect = self.playerRect.move([-self.speed,0])
            print('X', self.playerX)
            print(self.playerStatus.get_rect())
        elif self.playerwalright:
            #self.playerX += self.speed  # 向右移动
            self.playerRect = self.playerRect.move([self.speed, 0])
            print('X', self.playerX)
            print(self.playerStatus.get_rect())


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('code.jpg')
        self.monsterRect = pygame.Rect((self.monsterX, self.monsterY), (50, 71))
        self.monster_Rect = self.monsterStatus.get_rect()


def createMap():
    screen.fill((255, 255, 255))
    screen.blit(pygame.image.load('背景图.jpg'), (0, 0))  # 加载背景图片
    screen.blit(Monster.monsterStatus, Monster.monsterRect)  # 加载怪物
    screen.blit(Player.playerStatus, Player.playerRect)  # 加载任务
    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)
                    print('mmmmm',Monster.monster_Rect)
                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 14:59:40 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 15:02:30 | 显示全部楼层
循环语句都没有...图像出的来么...图像也没刷出来...你这少的有点多啊。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 15:05:07 | 显示全部楼层
yhhpf 发表于 2020-7-14 15:02
循环语句都没有...图像出的来么...图像也没刷出来...你这少的有点多啊。。。

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

使用道具 举报

 楼主| 发表于 2020-7-14 15:05:47 | 显示全部楼层
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:06:00 | 显示全部楼层

那你这部分代码咋看...我只能看到加载图像那一行的缩进肯定是错的- -...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 15:06:18 | 显示全部楼层
yhhpf 发表于 2020-7-14 15:02
循环语句都没有...图像出的来么...图像也没刷出来...你这少的有点多啊。。。

下面贴个全的 帮忙看看谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

#self.playerY -= self.speed  # 向前移动
self.playerRect = self.playerRect.move([0,-self.speed])
你是通过定义x.y实现的移动,你改成rect.move()的方法即可。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 15:42:39 | 显示全部楼层    本楼为最佳答案   
下面是在你基础上改的,图片名称你自己换下,代码里加了几个print输出验证的,你自己删掉。
import sys
import pygame
from pygame.locals import *


class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__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('code.jpg')  # 加载任务图像
        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  # 向前移动
            self.playerRect = self.playerRect.move([0,self.speed])
            print('Y', self.playerY)
            print(self.playerStatus.get_rect())
        elif self.playerwalkback:
            #self.playerY += self.speed  # 向后移动
            self.playerRect = self.playerRect.move([0, -self.speed])
            print('Y', self.playerY)
            print(self.playerStatus.get_rect())
        elif self.playerwalkleft:
            #self.playerX -= self.speed  # 向左移动
            self.playerRect = self.playerRect.move([-self.speed,0])
            print('X', self.playerX)
            print(self.playerStatus.get_rect())
        elif self.playerwalright:
            #self.playerX += self.speed  # 向右移动
            self.playerRect = self.playerRect.move([self.speed, 0])
            print('X', self.playerX)
            print(self.playerStatus.get_rect())


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('code.jpg')
        self.monsterRect = pygame.Rect((self.monsterX, self.monsterY), (50, 71))
        self.monster_Rect = self.monsterStatus.get_rect()


def createMap():
    screen.fill((255, 255, 255))
    screen.blit(pygame.image.load('背景图.jpg'), (0, 0))  # 加载背景图片
    screen.blit(Monster.monsterStatus, Monster.monsterRect)  # 加载怪物
    screen.blit(Player.playerStatus, Player.playerRect)  # 加载任务
    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)
                    print('mmmmm',Monster.monster_Rect)
                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:58:37 | 显示全部楼层
yhhpf 发表于 2020-7-14 15:42
下面是在你基础上改的,图片名称你自己换下,代码里加了几个print输出验证的,你自己删掉。

Y 195
Y 200
Y 205
m <rect(100, 100, 50, 71)>
p <rect(0, -25, 50, 71)>
好像不太行啊,移动后坐标对不上啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你初始化的X、Y,我改掉之后的初始化是在0,0。rect和你代码上的X,Y肯定对不上。两个调整为一致即可。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你加上self.playerRect.left , self.playerRect.top = self.playerX ,self.playerY再看吧。这样是不是就对应上了?
其实你没必要去专门定义X,Y。直接用rect.left rect.top代替即可。

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('code.jpg')  # 加载任务图像
        self.playerRect = self.playerStatus.get_rect()
        self.playerRect.left , self.playerRect.top = self.playerX ,self.playerY
        # 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  # 向前移动
            self.playerRect = self.playerRect.move([0, -self.speed])
            print('Y', self.playerY)
        elif self.playerwalkback:
            self.playerY += self.speed  # 向后移动
            self.playerRect = self.playerRect.move([0, self.speed])
            print('Y', self.playerY)
        elif self.playerwalkleft:
            self.playerX -= self.speed  # 向左移动
            self.playerRect = self.playerRect.move([-self.speed, 0 ])
            print('X', self.playerX)
        elif self.playerwalright:
            self.playerX += self.speed  # 向右移动
            self.playerRect = self.playerRect.move([self.speed, 0])
            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('code.jpg')
        self.monsterRect = pygame.Rect((self.monsterX, self.monsterY), (50, 71))


def createMap():
    screen.fill((255, 255, 255))
    screen.blit(pygame.image.load('背景图.jpg'), (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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 01:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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