這是學習嵩天老師的課程,習得並引以為筆記。
pygame提供有乙個pygame.display.set_mode可以設定遊戲螢幕的尺寸以及相關設定,pygame.display.set_mode(r=(0,0), flags=0)其中r是遊戲螢幕的解析度,採用(width,height)方式輸入;
flags用來控制顯示型別,可與|混合使用,有標籤:pygame.resizable表示視窗大小可調;pygame.noframe表示視窗無邊界;pygame.fullscreen表示視窗全屏顯示。
每種顯示方式需要配合相應的處理機制。
配合pygame.display.info()產生乙個顯示資訊物件videoinfo,表達當前螢幕資訊在.set_mode前呼叫,其中current_w表示畫素寬度,current_h表示畫素高度。
import pygame,sys
pygame.init(
)vinfo = pygame.display.info(
)#設定顯示
#size = width,heigth = 600,400
size = width,heigth = vinfo.current_w,vinfo.current_h
speed =[1
,1]black =0,
0,0#screen = pygame.display.set_mode(size)
#screen = pygame.display.set_mode(size,pygame.resizable)
#screen = pygame.display.set_mode(size,pygame.noframe)
screen = pygame.display.set_mode(size,pygame.fullscreen)
pygame.display.set_caption(
"遊戲之旅"
)ball = pygame.image.load(
"000111.gif"
)ballrect = ball.get_rect(
)fps =
300#設定為300
fclock = pygame.time.clock(
)while
true
:for event in pygame.event.get():
if event.
type
== pygame.quit:
sys.exit(
)elif event.
type
== pygame.keydown:
if event.key == pygame.k_left:
speed[0]
= speed[0]
if speed[0]
==0else
(abs
(speed[0]
)-1)
*int
(speed[0]
/abs
(speed[0]
))elif event.key == pygame.k_right:
speed[0]
= speed[0]
+1if speed[0]
>
0else speed[0]
-1elif event.key == pygame.k_up:
speed[1]
= speed[1]
+1if speed[1]
>
0else speed[0]
-1elif event.key == pygame.k_down:
speed[1]
= speed[1]
if speed[1]
==0else
(abs
(speed[1]
)-1)
*int
(speed[1]
/abs
(speed[1]
))elif event.key == pygame.k_esc:
#退出遊戲
sys.exit(
) ballrect = ballrect.move(speed[0]
,speed[1]
)if ballrect.left <
0or ballrect.right > width:
speed[0]
=-speed[0]
if ballrect.top <
0or ballrect.bottom > heigth:
speed[1]
=-speed[1]
screen.fill(black)
screen.blit(ball,ballrect)
pygame.display.update(
)#重新整理窗體
fclock.tick(fps)
這是在全螢幕式下(也可以自己改動上面#表示的已經給出)的壁球碰壁遊戲,增加了info及其相關引數,並設定了利用esc鍵退出。
下面是利用pygame.videoresize視窗大小更改的事件,不會發生視窗改動了但遊戲的範圍沒改動的現象
import pygame,sys
pygame.init(
)#vinfo = pygame.display.info() #設定顯示
size = width,heigth =
600,
400#size = width,heigth = vinfo.current_w,vinfo.current_h
speed =[1
,1]black =0,
0,0#screen = pygame.display.set_mode(size)
screen = pygame.display.set_mode(size,pygame.resizable)
#screen = pygame.display.set_mode(size,pygame.noframe)
#screen = pygame.display.set_mode(size,pygame.fullscreen)
pygame.display.set_caption(
"遊戲之旅"
)ball = pygame.image.load(
"000111.gif"
)ballrect = ball.get_rect(
)fps =
300#設定為300
fclock = pygame.time.clock(
)while
true
:for event in pygame.event.get():
if event.
type
== pygame.quit:
sys.exit(
)elif event.
type
== pygame.keydown:
if event.key == pygame.k_left:
speed[0]
= speed[0]
if speed[0]
==0else
(abs
(speed[0]
)-1)
*int
(speed[0]
/abs
(speed[0]
))elif event.key == pygame.k_right:
speed[0]
= speed[0]
+1if speed[0]
>
0else speed[0]
-1elif event.key == pygame.k_up:
speed[1]
= speed[1]
+1if speed[1]
>
0else speed[0]
-1elif event.key == pygame.k_down:
speed[1]
= speed[1]
if speed[1]
==0else
(abs
(speed[1]
)-1)
*int
(speed[1]
/abs
(speed[1]
))elif event.key == pygame.k_esc:
#退出遊戲
sys.exit(
)elif event.
type
== pygame.videoresize:
#響應事件並更改窗體大小
size = width,heigth = event.size[0]
,event.size[1]
#尺寸賦給當前螢幕
screen = pygame.display.set_mode(size,pygame.resizable)
ballrect = ballrect.move(speed[0]
,speed[1]
)if ballrect.left <
0or ballrect.right > width:
speed[0]
=-speed[0]
if ballrect.top <
0or ballrect.bottom > heigth:
speed[1]
=-speed[1]
screen.fill(black)
screen.blit(ball,ballrect)
pygame.display.update(
)#重新整理窗體
fclock.tick(fps)
當執行這段**時,可以隨意伸縮遊戲螢幕的大小。 pygame學習筆記(二)螢幕的繪製
本節記錄幾個螢幕繪製時所需要的函式 pygame.display.set mode r,flags r是遊戲視窗的大小,採用 width,height 的方式輸入 flags用來控制顯示型別,可用 組合使用,常用標籤有 pygame.resizable 視窗大小可調 pygame.noframe 視...
pygame繪製橢圓方法
繪製圓形方法 pygame.draw.ellipse su ce,color,rect,width pygame 官網介紹說明方法 circle方法介紹 surfuce引數 傳入需要在該su ce物件上繪製圓形的su ce物件 color引數 需要繪製圓形的線的顏色,傳入乙個rgb三原色元組 rec...
使用pygame繪製文字
一 使用文字需要匯入乙個方法 freetype 具體方法 pygame.freetype.font c windows fonts 方正粗黑宋簡體.ttf 24 前者表示字型型別,後者表示字型大小 字型型別在電腦的c盤windows fonts檔案下 import pygame,sys import...