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

好了 讓我們來看看效果(長按鍵盤左或者右方向鍵)

看起來效果還可以。

好了 今天先到這裏,明天(或者後天,主要取決於孩子睡覺的早晚- -!)或會加上小球,並和擋板做精靈衝突。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章