python我們可以做文字版的遊戲,比如猜數字遊戲,21點遊戲。那python可以做圖形界面的遊戲嗎?偷偷告訴你,用pygame庫就可以實作了。pygame是python中專門用來編寫遊戲的一個引擎庫,通過使用它,就可以很快的實作編寫圖形化的遊戲。

實作思路:
第一步:建立遊戲視窗
第二步:繪制一個彈球
第三步:讓球動起來
球動起來的原理實際上就是球的位置發生了改變,位置是由球的x,y坐标決定的,是以隻要不斷改變球的坐标就可以實作動起來的效果了。
第四步:邊界檢測
怎樣知道球出了邊界呢?通過比較球的x,y坐标值與邊界的坐标值,進而判斷是否出了邊界。
1.建立遊戲視窗
這個已經非常熟練了,直接看代碼。
代碼:
import pygame
import sys
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("彈球遊戲")
# 背景白色
bg = (255,255,255)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
pygame.display.flip() # 更新
複制
效果:
2.繪制一個彈球
繪制一個小球,其實就是繪制一個圓。
代碼:
import pygame
import sys
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("彈球遊戲")
# 背景白色
bg = (255,255,255)
# 球的顔色 紅色
ball_color = (255,0,0)
# 球的大小 半徑
ball_size = 20
# 球的初始位置 設定在視窗中心位置
pos_x,pos_y = width//2-ball_size,height//2-ball_size
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
# 在視窗上繪制一個圓形 球
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size)
pygame.display.flip()
複制
3.讓球動起來
小球是繪制出來了,那該怎樣讓它動起來了呢?物體動其實它的位置發生了改變,在計算機中就是它的坐标,我們隻要讓球的坐标變化,利用人眼暫留的效應,使得小球看上去在運動一樣。
代碼:
import pygame
import sys
import random
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("彈球遊戲")
# 背景白色
bg = (255,255,255)
# 球的顔色 紅色
ball_color = (255,0,0)
# 球的大小 半徑
ball_size = 20
# 球的初始位置 設定在視窗中心位置
pos_x,pos_y = width//2-ball_size,height//2-ball_size
# 設定球的 初始速度
speed_x=random.randint(1,5)
speed_y=random.randint(1,5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
# 在視窗上繪制一個圓形 球
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size)
pygame.display.flip()
# 等待 100ms 避免重新整理太快
pygame.time.wait(100)
# 更改位置
pos_x += speed_x
pos_y += speed_y
複制
效果:
4.邊界檢測
雖然小球可以移動了,但是發現沒過一會,小球就跑出視窗了,這個時候,我們需要檢測小球是否到達邊界,到了就改變運動方向。
代碼:
import pygame
import sys
import random
pygame.init()
size =width,height=400,300
screen = pygame.display.set_mode(size)
pygame.display.set_caption("彈球遊戲")
# 背景白色
bg = (255,255,255)
# 球的顔色 紅色
ball_color = (255,0,0)
# 球的大小 半徑
ball_size = 20
# 球的初始位置 設定在視窗中心位置
pos_x,pos_y = width//2-ball_size,height//2-ball_size
# 設定球的 初始速度
speed_x=random.randint(1,5)
speed_y=random.randint(1,5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bg)
# 在視窗上繪制一個圓形 球
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size)
pygame.display.flip()
# 等待 100ms 避免重新整理太快
pygame.time.wait(100)
# 如果小球碰到左右邊界,改變速度反彈
if pos_x <ball_size or pos_x > width-ball_size:
speed_x = -speed_x
# 如果小球碰到上下邊界,改變速度反彈
if pos_y <ball_size or pos_y > height-ball_size:
speed_y = -speed_y
# 更改位置
pos_x += speed_x
pos_y += speed_y
複制
效果:
總結:
本文主要講了如何繪制一個圓形球,如何讓球移動起來,以及限制小球移除邊界。
pygame.draw.circle(screen,ball_color,[pos_x,pos_y],ball_size) 在視窗上的中心位置繪制一個什麼顔色,多大的圓形。
speed_x = -speed_x,speed_y = -speed_y - 号表示取反的意思
pos_x <ball_size or pos_x > width-ball_size 判斷是否出了 上邊界 或者 下邊界
pos_x += speed_x ,pos_y += speed_y 累加 等效于 pos_x = pos_x+ speed_x