python+pygame实现推箱子小游戏之二

上回python+pygame实现推箱子小游戏之一完成了推箱子工人的类的实现,现在可以完成其他一些元素的类的实现

其他的页面元素(箱子box,外墙wall,终点target)class  gameElementSprite,同样继承自pygame.sprite.Sprite,用elementtype来区别,只有box可以被移动,同时在移动之前,要判断在当前的位置和方向上的下一个位置能不能到达,因此要返回下一个位置。有了前面的基础,这个的实现较为简单。

import os
import pygame
from params import Params

'''
游戏元素
'''
class gameElementSprite(pygame.sprite.Sprite):
	def __init__(self, elementname, col, row):
		pygame.sprite.Sprite.__init__(self)
		# box.png/target.png/wall.png 分别代表箱子,终点,外墙
		self.imagepath = os.path.join(Params.get('resourcePath'), Params.get('imgFolder'), elementname)
		self.image = pygame.image.load(self.imagepath).convert_alpha()
		self.rect = self.image.get_rect()
		self.elementtype = elementname.split('.')[0]    # 元素精灵类型,即box,target,wall
		self.col = col
		self.row = row

	'''
	移动游戏元素
	'''
	def move(self, direction):
		if self.elementtype == 'box':  #元素中只有box可以移动
			if direction == 'up':
				self.row -= 1
			elif direction == 'down':
				self.row += 1
			elif direction == 'left':
				self.col -= 1
			elif direction == 'right':
				self.col += 1
	
	'''
	获取下一个点的位置
	'''
	def getNextPos(self, direction):
		if direction == 'up':
			return self.col, self.row - 1
		elif direction == 'down':
			return self.col, self.row + 1
		elif direction == 'left':
			return self.col - 1, self.row
		elif direction == 'right':
			return self.col + 1, self.row

	'''
	将元素画到游戏界面上
	'''
	def draw(self, gamescreen):
		self.rect.x = self.rect.width * self.col
		self.rect.y = self.rect.height * self.row
		gamescreen.blit(self.image, self.rect)

注解:

1、后续构造时,例如传进来的wall.png,就会在相应的坐标上draw一个“外墙”,其elementtype就是wall。

2、箱子box,外墙wall,终点target三者中,只有box是可以移动的。

待续...

python+pygame实现推箱子小游戏之三

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值