推箱子 后续

前言

既做了雏形,不稍微完善一点心里总有点小疙瘩。

效果图

在这里插入图片描述

补充说明

1、游戏通关通过rect判断而不是碰撞(两个终点)
2、增加人物行走的动作(布尔标志位)
3、箱子覆盖于终点之上有特殊颜色(image_alt)
4、选素材用心了些

源代码

import tkinter as tk
import pygame
import time
import numpy as np
import sys

from PIL import ImageTk,Image,ImageGrab
from tkinter import StringVar,IntVar,messagebox,Radiobutton


#屏幕大小的常量
SCREEN_RECT = pygame.Rect(0,0,640,640)
#刷新的帧率
FRAME_PER_SEC = 60
#墙体

class GameSprite(pygame.sprite.Sprite):  #(继承父类) 其中sprite是模块 Sprite是类名称
    '''精灵基类'''
    #构造函数/初始化
    image_name = 0
    def __init__(self,image_name,x=0,y=0,z=1):
        self.move_num = 0
        self.leftorright = True
        #调用父类初始化方法
        super().__init__()
        #定义对象的属性
        self.image_name = image_name
        self.image = pygame.image.load(self.image_name)
        if z == 0:
            self.rect = pygame.Rect(0,0,64,64)
        else :
            self.rect = self.image.get_rect()  #图像的属性
        self.rect.x = x*64
        self.rect.y = y*64

class hero(GameSprite):
    '''英雄类'''
    def __init__(self,x,y):
        super().__init__("./image/character1.png",x,y,0)
        self.num = 0

    def move(self,num):
        self.num = num

    def update(self,hero_group,wall_group,box_group):
        #print(self.rect)
        # 传入 1 2 3 4 分别对应上下左右 1-1
        if self.num == 1:
            if self.leftorright:
                self.image_name = './image/Character7.png'
            else :
                self.image_name = './image/Character8.png'
            self.rect.y -= 64
            if len(pygame.sprite.groupcollide(hero_group, wall_group, False, False)) > 0:
                self.rect.y += 64

            if len(pygame.sprite.groupcollide(hero_group, box_group, False, False)) > 0:
                self.rect.y -= 64
                if len(pygame.sprite.groupcollide(hero_group, wall_group, False, False)) + len(
                        pygame.sprite.groupcollide(hero_group, box_group, False, False)) > 0:
                    self.rect.y += 64
                self.rect.y += 64

        elif self.num ==2 :
            if self.leftorright:
                self.image_name = './image/Character4.png'
            else :
                self.image_name = './image/Character5.png'
            self.rect.y += 64
            if len(pygame.sprite.groupcollide(hero_group, wall_group, False, False)) > 0:
       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值