pygame学习笔记-打砖块游戏开发日志(一)

        最近一段时间比较忙,出差很多。虽然带着surface在哪都可以撸代码,但是,白天跑一天晚上真的是一点精力都没有。直到这两天回到家,慢慢的才调整过来。看了看书架上的那一堆书,紧迫感油然而生。最近还是赶紧把这本《Python游戏编程入门》看完吧。这两天看到介绍打砖块的那一章。我感觉这个作者平时主要使用的开发语言肯定是C#和java,因为他的代码里对变量作用域的写法很奇怪。经常看到作者用global定义全局变量,或者是在类中写函数的局部变量。说实话,对我这种纯小白着实是有点晦涩。于是又回去恶补了一下作用域和python变量的命名空间的知识。最后还是决定按照自己的习惯把这个游戏写出来。好了龟速撸码开始。首先,既然写的是一个打砖块游戏。那么大概的思路就是,先确定游戏中的元素类型:1.砖块(废话)2.挡板(废话)3.球(还是废话),再确定各个元素所要实现的功能:当球碰到砖块,则砖块消失,球碰到屏幕除过下部以外的边缘则反弹,当球抛出屏幕下沿则游戏失败。好了 整个游戏思路大概就是这样了。

       好了既然确定了思路那么开工。首先,我先把游戏里的元素图片找到,这个图片是我自己画的,很丑(- -)。

  《==砖块                《==挡板               《==球

     今天第一步就先把挡板画出来吧。

     创建一个挡板的类(继承精灵)并生成一个实例。写一个挡板的update()函数,让挡板能够左右移动。今天太晚了(这会凌晨00:32)代码的注释就先不加了。明天有空加。

     代码如下:

#!usr/bin/python
#!coding=utf-8

import pygame,sys
from pygame.sprite import Sprite

class Paddle(Sprite):
	def __init__(self,screen):
		super().__init__()
		self.screen = screen
		self.image = pygame.image.load('paddle.png')
		self.rect = self.image.get_rect()
		self.rect.bottom = 490
		self.paddle_left = False
		self.paddle_right = False

	def update(self):
		if self.paddle_left and self.rect.left > 0:
			self.rect.centerx -= 8
		if self.paddle_right and self.rect.right < 600:
			self.rect.centerx += 8

	def blitme(self):
		self.screen.blit(self.image,self.rect)

pygame.init()
screen = pygame.display.set_mode((600,500))
pygame.display.set_caption('打方块')
paddle = Paddle(screen)
timer = pygame.time.Clock()

while True:
	timer.tick(50)
	ticks = pygame.time.get_ticks()

	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			sys.exit()
		elif event.type == pygame.KEYDOWN:
			if event.key == pygame.K_LEFT:
				paddle.paddle_left = True
			if event.key == pygame.K_RIGHT:
				paddle.paddle_right = True
		elif event.type == pygame.KEYUP:
			if event.key == pygame.K_LEFT:
				paddle.paddle_left = False
			if event.key == pygame.K_RIGHT:
				paddle.paddle_right = False

	screen.fill((20,40,255))
	paddle.update()
	print(paddle.rect.centerx)
	paddle.blitme()
	pygame.display.flip()

好了 让我们来看看效果(长按键盘左或者右方向键)

看起来效果还可以。

好了 今天先到这里,明天(或者后天,主要取决于孩子睡觉的早晚- -!)或会加上小球,并和挡板做精灵冲突。

猜你喜欢

转载自blog.csdn.net/zzwlyj/article/details/82795516