pygame螢幕繪製(1)

2021-10-06 18:41:51 字數 4809 閱讀 6273

這是學習嵩天老師的課程,習得並引以為筆記。

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...