這是學習嵩天老師的課程,習得並引以為筆記。
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表示畫素高度。
這是在全螢幕式下(也可以自己改動上面#表示的已經給出)的壁球碰壁遊戲,增加了info及其相關引數,並設定了利用esc鍵退出。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)
下面是利用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...