「閱讀本文大概需要6分鐘」
你好,我是悅創。
前面我們講了,一些 pygame 的操作,接下來呢,我們成功步入實戰階段。
目錄1. 遊戲介紹足球在畫面中運動,遇到上、左、右以及接杆就會反彈,且接杆接住會積分,如果掉落到下面,則遊戲結束。
接下來,編寫基礎代碼:
import pygame, sys
from pygame.locals import *
# 初始化 pygame
pygame.init()
screen = pygame.display.set_mode([800, 700])
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
pygame.display.flip()
創建一個專門控制小球的類,用來給定小球的樣式。得到小球的矩形選框,然後獲得獲得小球矩形選框的左側與頂部的邊緣,還有小球的移動速度。# 創建球類
class Myballclass(pygame.sprite.Sprite):
# 給出圖矩形速度並給定對應的值
def __init__(self, image_file, speed, location):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(image_file)
self.image = pygame.transform.smoothscale(self.image, (80, 70))
self.rect = self.image.get_rect()
self.rect.left, self.rect.top = location
self.speed = speed# 球類給定值
myball = Myballclass(r'football.png', ball_speed, [10, 20])
# 刷新時間
time = 30
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.blit(myball.image, myball.rect)
pygame.display.flip()
現在開始讓球運動起來並進行反彈,當小球移動到最邊緣時速度取反(這部分寫在球類中,另外通過 self 來表示類的屬性)。# 球的移動
def ball_move(self):
self.rect = self.rect.move(self.speed)
# 控制小球在遊戲界面內
if self.rect.left < 0 or self.rect.right > screen.get_width():
self.speed[0] = -self.speed[0]
if self.rect.top <= 0:
self.speed[1] = -self.speed[1]
類需要編寫結束函數。仍然讓小球不斷運動,然後判斷遊戲結束,並對遊戲結束時要顯示的字進行處理。# 遊戲結束
def over(self):
self.rect = self.rect.move(self.speed)
# 當小球底部大於界面高度時判定遊戲結束
if self.rect.bottom > screen.get_height():
# SysFount 從系統字體中創建一個font對象(字體樣式, 大小)
font = pygame.font.SysFont('宋體', 40)
# render 在新的surface上繪製文本(文本, 抗鋸齒, 顏色, 背景)
text_surface = font.render(u"Game Over", True, (0, 0, 255))
screen.blit(text_surface, (screen.get_width() // 2, screen.get_height() // 2))
return 0下部分,明天繼續!
AI悅創·推出輔導班啦,包括「Python 語言輔導班、C++輔導班、算法/數據結構輔導班、少兒編程、pygame 遊戲開發」,全部都是一對一教學:一對一輔導 + 一對一答疑 + 布置作業 + 項目實踐等。QQ、微信在線,隨時響應!V:Jiabcdefh
黃家寶丨AI悅創
隱形字
攝影公眾號「悅創攝影研習社」
在這裡分享自己的一些經驗、想法和見解。
曾經要給我讚賞的人兒,還在不?