Pythonゲームレッスンノート・嵩天
Pythonゲームレッスンノート
import pygame,sys
SysはPython標準ライブラリです
sys.exit()はゲームを終了して終了するために使用されます
pygame.Init()初期化作成
screen = pygame.display.set_mode(600400))ウィンドウ設定
pygame.displa.set_Caption(「Pythonゲームの旅」)タイトル
画像get_rect()は、画像を上書きした矩形Rectオブジェクトを返します.
width,height
ball = pygame.image.load()画像を読み込み、jpg,pngをサポート
ballrect.move(x,y)x,y方向移動
screen.Fill(R,G,B)ウィンドウ背景塗り色
screen.blit(src,dest)はscrをdest位置に描画し、枠とボールが一緒に動くようにしますよ
スクリーンペイントの関数:スクリーンサイズとモード:pygame.display.set_mode()は関連画面モードpygameを設定する.display.Info()画面関連情報ウィンドウのタイトルとアイコン:pygame.display.set_Caption()タイトル情報pygameを設定する.display.set_icon()アイコン情報pygameを設定する.display.get_Caption()取得アイコンウィンドウ感知とリフレッシュ:pygame.display.get_active() pygame.display.flip()すべてのウィンドウをリフレッシュpygame.display.update()変化する領域のみをリフレッシュ
pygame.display.set_mode(r=(0,0),flags=0)r解像度(width,height)flags:pygame.RESIZABLEウィンドウサイズ可変pygame.NOFRAMEウィンドウには境界表示pygameがない.FULLSCREENウィンドウにpygameが全画面表示されます.display.Info()は現在の画面情報を表示し、set_modeの前にcurrent_を使用w:現在の表示モードまたはウィンドウの画素幅current_h:現在の表示モードまたはウィンドウの画素高さpygame.display.set_Caption(title,icontitle=None)title設定ウィンドウのタイトル内容icontitle設定アイコン化された小タイトルpygame.display.get_Caption()取得情報はメタグループpygameである.display.set_icon(surface)ウィンドウのアイコン効果pygameを設定.display.get_Active()ウィンドウシステムに戻るTrueを表示し、最小化するとFalseを返します
キーボードイベント:キーボード押下:pygame.event.KEYDOWN戻り値:event.unicode事件のunicodeコードはeventをお勧めしません.キー定数名event.modキー修飾子の組み合わせキーボード解放:pygame.event.KEYUP戻り値:event.キー定数名event.modボタン修飾子の組み合わせ|記号
マウスイベント:pygame.event.MOUSEMOTIONマウス移動イベントevent.posマウスの現在の座標値(x,y)event.relマウスの相対運動距離(x,y)、前回イベントevent.buttonsマウスボタン状態(a,b,c)は、マウスの3つのキーに対応して1を押します.
pygame.event.MOUSEBUTTONUPマウスリリースイベントevent.posマウスの現在の座標値event.buttonマウスはキー番号nを押して、0/1/2の値を取って、それぞれ3つのキーに対応します
pygame.event.MOUSEBUTTONDOWNマウスリリースイベントevent.posマウスの現在の座標値event.buttonマウスボタン番号n,左ボタン1,右ボタン3を押す
イベント処理関数:処理関数:pygame.event.get()イベントリストfor event in pygameを取得する.event.get(): if event.type == pygame.QUIT: sys.exit() pygame.event.Poll()イベントキューからイベントを取得する:while True:event=pygame.evwnt.Poll()時間取得はイベントキューから削除する、キューが空の場合eventを返す.NOEVENT pygame.event.clear()はイベントキューからイベントを削除し、デフォルトではすべてのイベント操作イベントキューを削除します:pygame.event.set_blocked(type or typelist)は、イベントキューに保存できないイベントを制御する.event.set_allowed(type or typelist)は、イベントキューに保存できるイベントを制御する.event.get_blocked(type)イベントタイプがイベントキューによって禁止されているかどうかをテストし、Trueを返します.Falseイベントアクション:pygame.event.post(Event)はイベントを生成する、それをイベントキューに入れる一般的に、ユーザのカスタムイベント(pygame.USEREVENT)を防止するために使用され、システム定義イベント(マウス)pygameを配置するために使用することもできる.event.Event(type,dict)指定したタイプのイベントイベントを作成するプロパティと値辞書タイプコピープロパティ名文字列形式
色彩表示:pygame.Color.r pygame.Color.g pygame.Color.b pygame.Color.a alpha値pygame.Color.normalize RGBA各チャネル値を1~0にまとめる
グラフィック描画:pygame.draw.rect(Surface,color,Rect,width=0)矩形Surface矩形描画画面Color矩形描画色Rect矩形の描画領域width=0描画エッジの幅、デフォルトは0 pygame.draw.polygon(Surface,color,pointlist,width=0)ポリゴンSurfaceポリゴン描画スクリーンColorポリゴン描画色pointlistポリゴン頂点座標リストwidth=0描画エッジの幅、デフォルトは0 pygame.draw.circle(Surface,color,pos,radius,width=0)円形Surface円形描画スクリーンColor円形描画色pos円形円心座標radius円形半径width=0描画エッジの幅、デフォルトは0 pygame.draw.Ellipse(Surface,color,Rect,width=0)楕円形Surface楕円形描画画面Color楕円形描画色Rect楕円形の描画領域width=0描画エッジの幅、デフォルトは0 pygame.draw.Arc(Surface,color,Rect,start_angle,stop_angle,width=0)円弧Surface楕円形描画画面Color楕円形描画色Rect楕円形描画領域start_angle,stop_Angle:円弧描画実および終了円弧width=0描画エッジの幅、デフォルトは0 pygame.draw.line(Surface,color,start_pos,end_pos,width=1)直線Surface直線描画画面Color直線描画色start_pos,end_pos直線の始点と終点座標width=1直線幅pygame.draw.Lines(Surface,color,closed,pointlist,width=1)多直線Surface多直線描画スクリーンColor多直線描画色closed True起止ノード間に閉鎖直線pointlist頂点座標リストwidth=1直線幅pygameを自動的に増加する.draw.aaline(Surface,color,start_pos,end_pos,blend=1)のこぎりのない直線Surfaceのこぎりのない線描画スクリーンColorのこぎりのない線描画色start_pos,end_pos無鋸歯線の開始座標と終了座標blend=1が0でない場合、線のある背景色とpygameを混合する.draw.Lines(Surface,color,closed,pointlist,width=1)多無鋸歯直線Surface多直線描画画面Color多直線描画色closed True起止ノード間で自動的に増加閉鎖直線pointlist頂点座標リストblend=1が0でない場合、線のある背景色と混合
テキスト描画:Font.render_to(surf,dest,text,fgcolor=None,bgcolor=None,rotation=0,size=0)→rect surf描画フォントの平面dest平面中位値、(x,y)test描画文字内容fgcolor文字色bgcolor背景色rotation反時計回り回転角度、0-359 size文字サイズFont.render(text,fgcolor=None,bgcolor=None,rotation=0,size=0)→(surface,rect) screen.blit(f1surf, (200,160))
import pygame,sys
SysはPython標準ライブラリです
sys.exit()はゲームを終了して終了するために使用されます
pygame.Init()初期化作成
screen = pygame.display.set_mode(600400))ウィンドウ設定
pygame.displa.set_Caption(「Pythonゲームの旅」)タイトル
画像get_rect()は、画像を上書きした矩形Rectオブジェクトを返します.
width,height
ball = pygame.image.load()画像を読み込み、jpg,pngをサポート
ballrect.move(x,y)x,y方向移動
screen.Fill(R,G,B)ウィンドウ背景塗り色
screen.blit(src,dest)はscrをdest位置に描画し、枠とボールが一緒に動くようにしますよ
スクリーンペイントの関数:スクリーンサイズとモード:pygame.display.set_mode()は関連画面モードpygameを設定する.display.Info()画面関連情報ウィンドウのタイトルとアイコン:pygame.display.set_Caption()タイトル情報pygameを設定する.display.set_icon()アイコン情報pygameを設定する.display.get_Caption()取得アイコンウィンドウ感知とリフレッシュ:pygame.display.get_active() pygame.display.flip()すべてのウィンドウをリフレッシュpygame.display.update()変化する領域のみをリフレッシュ
pygame.display.set_mode(r=(0,0),flags=0)r解像度(width,height)flags:pygame.RESIZABLEウィンドウサイズ可変pygame.NOFRAMEウィンドウには境界表示pygameがない.FULLSCREENウィンドウにpygameが全画面表示されます.display.Info()は現在の画面情報を表示し、set_modeの前にcurrent_を使用w:現在の表示モードまたはウィンドウの画素幅current_h:現在の表示モードまたはウィンドウの画素高さpygame.display.set_Caption(title,icontitle=None)title設定ウィンドウのタイトル内容icontitle設定アイコン化された小タイトルpygame.display.get_Caption()取得情報はメタグループpygameである.display.set_icon(surface)ウィンドウのアイコン効果pygameを設定.display.get_Active()ウィンドウシステムに戻るTrueを表示し、最小化するとFalseを返します
キーボードイベント:キーボード押下:pygame.event.KEYDOWN戻り値:event.unicode事件のunicodeコードはeventをお勧めしません.キー定数名event.modキー修飾子の組み合わせキーボード解放:pygame.event.KEYUP戻り値:event.キー定数名event.modボタン修飾子の組み合わせ|記号
マウスイベント:pygame.event.MOUSEMOTIONマウス移動イベントevent.posマウスの現在の座標値(x,y)event.relマウスの相対運動距離(x,y)、前回イベントevent.buttonsマウスボタン状態(a,b,c)は、マウスの3つのキーに対応して1を押します.
pygame.event.MOUSEBUTTONUPマウスリリースイベントevent.posマウスの現在の座標値event.buttonマウスはキー番号nを押して、0/1/2の値を取って、それぞれ3つのキーに対応します
pygame.event.MOUSEBUTTONDOWNマウスリリースイベントevent.posマウスの現在の座標値event.buttonマウスボタン番号n,左ボタン1,右ボタン3を押す
イベント処理関数:処理関数:pygame.event.get()イベントリストfor event in pygameを取得する.event.get(): if event.type == pygame.QUIT: sys.exit() pygame.event.Poll()イベントキューからイベントを取得する:while True:event=pygame.evwnt.Poll()時間取得はイベントキューから削除する、キューが空の場合eventを返す.NOEVENT pygame.event.clear()はイベントキューからイベントを削除し、デフォルトではすべてのイベント操作イベントキューを削除します:pygame.event.set_blocked(type or typelist)は、イベントキューに保存できないイベントを制御する.event.set_allowed(type or typelist)は、イベントキューに保存できるイベントを制御する.event.get_blocked(type)イベントタイプがイベントキューによって禁止されているかどうかをテストし、Trueを返します.Falseイベントアクション:pygame.event.post(Event)はイベントを生成する、それをイベントキューに入れる一般的に、ユーザのカスタムイベント(pygame.USEREVENT)を防止するために使用され、システム定義イベント(マウス)pygameを配置するために使用することもできる.event.Event(type,dict)指定したタイプのイベントイベントを作成するプロパティと値辞書タイプコピープロパティ名文字列形式
色彩表示:pygame.Color.r pygame.Color.g pygame.Color.b pygame.Color.a alpha値pygame.Color.normalize RGBA各チャネル値を1~0にまとめる
グラフィック描画:pygame.draw.rect(Surface,color,Rect,width=0)矩形Surface矩形描画画面Color矩形描画色Rect矩形の描画領域width=0描画エッジの幅、デフォルトは0 pygame.draw.polygon(Surface,color,pointlist,width=0)ポリゴンSurfaceポリゴン描画スクリーンColorポリゴン描画色pointlistポリゴン頂点座標リストwidth=0描画エッジの幅、デフォルトは0 pygame.draw.circle(Surface,color,pos,radius,width=0)円形Surface円形描画スクリーンColor円形描画色pos円形円心座標radius円形半径width=0描画エッジの幅、デフォルトは0 pygame.draw.Ellipse(Surface,color,Rect,width=0)楕円形Surface楕円形描画画面Color楕円形描画色Rect楕円形の描画領域width=0描画エッジの幅、デフォルトは0 pygame.draw.Arc(Surface,color,Rect,start_angle,stop_angle,width=0)円弧Surface楕円形描画画面Color楕円形描画色Rect楕円形描画領域start_angle,stop_Angle:円弧描画実および終了円弧width=0描画エッジの幅、デフォルトは0 pygame.draw.line(Surface,color,start_pos,end_pos,width=1)直線Surface直線描画画面Color直線描画色start_pos,end_pos直線の始点と終点座標width=1直線幅pygame.draw.Lines(Surface,color,closed,pointlist,width=1)多直線Surface多直線描画スクリーンColor多直線描画色closed True起止ノード間に閉鎖直線pointlist頂点座標リストwidth=1直線幅pygameを自動的に増加する.draw.aaline(Surface,color,start_pos,end_pos,blend=1)のこぎりのない直線Surfaceのこぎりのない線描画スクリーンColorのこぎりのない線描画色start_pos,end_pos無鋸歯線の開始座標と終了座標blend=1が0でない場合、線のある背景色とpygameを混合する.draw.Lines(Surface,color,closed,pointlist,width=1)多無鋸歯直線Surface多直線描画画面Color多直線描画色closed True起止ノード間で自動的に増加閉鎖直線pointlist頂点座標リストblend=1が0でない場合、線のある背景色と混合
テキスト描画:Font.render_to(surf,dest,text,fgcolor=None,bgcolor=None,rotation=0,size=0)→rect surf描画フォントの平面dest平面中位値、(x,y)test描画文字内容fgcolor文字色bgcolor背景色rotation反時計回り回転角度、0-359 size文字サイズFont.render(text,fgcolor=None,bgcolor=None,rotation=0,size=0)→(surface,rect) screen.blit(f1surf, (200,160))
# pygame
# Pygame Hello World Game
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Python ")
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
pygame.display.update()
''' :
pygame sys
init()
'''
#
# Pygame Hello World Game
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Python ")
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.unicode == "":
print("[KETDOWN]:", "#", event.key, event.mod)
else:
print("[KETDOWN]:", event.unicode, event.key, event.mod)
elif event.type == pygame.MOUSEMOTION:
print("[MOUSEMOTION]:", event.pos, event.rel, event.buttons)
elif event.type == pygame.MOUSEBUTTONUP:
print("[MOUSEBUTTONUP]:", event.pos, event.button)
elif event.type == pygame.MOUSEBUTTONDOWN:
print("[MOUSEBUTTONDOWN]:", event.pos, event.button)
pygame.display.update()
#
# Unit PYG04: Pygame Event Post
import pygame, sys
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pygame ")
fps = 1
fclock = pygame.time.Clock()
num = 1
while True:
uevent = pygame.event.Event(pygame.KEYDOWN, {
"unicode": 123, "key": pygame.K_SPACE, "mod": pygame.KMOD_ALT})
pygame.event.post(uevent)
num = num + 1
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.unicode == "":
print("[KEYDOWN {}]:".format(num), "#", event.key, event.mod)
else:
print("[KEYDOWN {}]:".format(num), event.unicode, event.key, event.mod)
pygame.display.update()
fclock.tick(fps)
#
# Unit PYG05: Pygame Shape Draw Test
from math import pi
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pygame ")
GOLD = 255, 251, 0
RED = pygame.Color('red')
WHITE = 255, 255, 255
GREEN = pygame.Color('green')
# r1rect = pygame.draw.rect(screen, GOLD, (100,100,200,100), 5)
# r2rect = pygame.draw.rect(screen, RED, (210,210,200,100), 0)
e1rect = pygame.draw.ellipse(screen, GREEN, (50, 50, 500, 300), 3)
c1rect = pygame.draw.circle(screen, GOLD, (200, 180), 30, 5)
c2rect = pygame.draw.circle(screen, GOLD, (400, 180), 30)
r1rect = pygame.draw.rect(screen, RED, (170, 130, 60, 10), 3)
r2rect = pygame.draw.rect(screen, RED, (370, 130, 60, 10))
plist = [(295, 170), (285, 250), (260, 280), (340, 280), (315, 250), (305, 170)]
l1rect = pygame.draw.lines(screen, GOLD, True, plist, 2)
a1rect = pygame.draw.arc(screen, RED, (200, 220, 200, 100), 1.4 * pi, 1.9 * pi, 3)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
pygame.display.update()
# 1
# Unit PYG05: Pygame Font Draw
import pygame, sys
import pygame.freetype
import os
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pygame ")
GOLD = 255, 251, 0
f1 = pygame.freetype.Font("C://Windows//Fonts//msyh.ttc", 36)
f1rect = f1.render_to(screen, (200, 160), " ", fgcolor=GOLD, size=50)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
pygame.display.update()
# 2
# Unit PYG05: Pygame Font Draw
import pygame, sys
import pygame.freetype
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pygame ")
GOLD = 255, 251, 0
f1 = pygame.freetype.Font("C://Windows//Fonts//msyh.ttc", 36)
f1surf, f1rect = f1.render(" ", fgcolor=GOLD, size=50)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.blit(f1surf, (200, 160))
pygame.display.update()
# 1
import pygame
import sys
import os
#
pygame.init()
size = width, height = 600, 400
speed = [1, 1]
BLACK = 0, 0, 0
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame ")
ball = pygame.image.load(("ball.gif"))
ballrect = ball.get_rect()# Rect
#
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
ballrect = ballrect.move(speed[0],speed[1])
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom>height:
speed[1]=-speed[1]
#
screen.fill(BLACK)
screen.blit(ball,ballrect)
pygame.display.update()
# 2
import pygame
import sys
import os
#
pygame.init()
size = width, height = 600, 400
speed = [1, 1]
BLACK = 0, 0, 0
fps = 144#
fclock = pygame.time.Clock()
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame ")
ball = pygame.image.load(os.path.join(r'C:\Users\zhj72\iCloudDrive\files\program\Python\pygame', "ball.gif"))
ballrect = ball.get_rect()# Rect
#
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
ballrect = ballrect.move(speed[0],speed[1])
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
#
screen.fill(BLACK)
screen.blit(ball,ballrect)
pygame.display.update()
fclock.tick(fps)
# 3
import pygame
import sys
import os
#
pygame.init()
size = width, height = 600, 400
speed = [1, 1]
BLACK = 0, 0, 0
fps = 144#
fclock = pygame.time.Clock()
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame ")
ball = pygame.image.load(os.path.join(r'C:\Users\zhj72\iCloudDrive\files\program\Python\pygame', "ball.gif"))
ballrect = ball.get_rect()# Rect
#
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]==0 else(abs(speed[0] - 1) * int(speed[0] / abs(speed[0])))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0]+1 if speed[0]>0 else speed[0]-1
elif event.key == pygame.K_UP:
speed[1] = speed[1]+1 if speed[1]>0 else speed[1]-1
elif event.key == pygame.K_DOWN:
speed[1] = speed[1] if speed[1]==0 else(abs(speed[1] - 1) * int(speed[1] / abs(speed[1])))
ballrect = ballrect.move(speed[0],speed[1])
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
#
screen.fill(BLACK)
screen.blit(ball,ballrect)
pygame.display.update()
fclock.tick(fps)
# 4
#Unit PYG03: Pygame Wall Ball Game version 4
import pygame,sys
import os
pygame.init()
vInfo = pygame.display.Info() #
size = width, height = vInfo.current_w, vInfo.current_h
speed = [1,1]
BLACK = 0, 0, 0
#print(pygame.display.Info())
#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("Pygame ")
ball = pygame.image.load(os.path.join(r'C:\Users\zhj72\iCloudDrive\files\program\Python\pygame', "ball.gif"))
ballrect = ball.get_rect()
fps = 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] == 0 else (abs(speed[0]) - 1)*int(speed[0]/abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
elif event.key == pygame.K_DOWN:
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1)*int(speed[1]/abs(speed[1]))
elif event.key == pygame.K_ESCAPE:
sys.exit()
ballrect = ballrect.move(speed)
if ballrect.left < 0 or ballrect.right > width:
speed[0] = - speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = - speed[1]
screen.fill(BLACK)
screen.blit(ball, ballrect)
pygame.display.update()
fclock.tick(fps)
# 5
#Unit PYG03: Pygame Wall Ball Game version 4
import pygame,sys
import os
pygame.init()
size = width, height = 600, 400
speed = [1,1]
BLACK = 0, 0, 0
#print(pygame.display.Info())
#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("Pygame ")
ball = pygame.image.load(os.path.join(r'C:\Users\zhj72\iCloudDrive\files\program\Python\pygame', "ball.gif"))
ballrect = ball.get_rect()
fps = 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] == 0 else (abs(speed[0]) - 1)*int(speed[0]/abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
elif event.key == pygame.K_DOWN:
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1)*int(speed[1]/abs(speed[1]))
elif event.key == pygame.K_ESCAPE:
sys.exit()
elif event.type == pygame.VIDEORESIZE:
size = width, height = event.size[0], event.size[1]
screen = pygame.display.set_mode(size, pygame.RESIZABLE)
ballrect = ballrect.move(speed)
if ballrect.left < 0 or ballrect.right > width:
speed[0] = - speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = - speed[1]
screen.fill(BLACK)
screen.blit(ball, ballrect)
pygame.display.update()
fclock.tick(fps)
# 6
#Unit PYG03: Pygame Wall Ball Game version 4
import os
import pygame
import sys
pygame.init()
size = width, height = 600, 400
speed = [1,1]
BLACK = 0, 0, 0
#print(pygame.display.Info())
#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("Pygame ")
ball = pygame.image.load(os.path.join("ball.gif"))
pygame.display.set_icon(ball)
ballrect = ball.get_rect()
fps = 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] == 0 else (abs(speed[0]) - 1)*int(speed[0]/abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
elif event.key == pygame.K_DOWN:
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1)*int(speed[1]/abs(speed[1]))
elif event.key == pygame.K_ESCAPE:
sys.exit()
elif event.type == pygame.VIDEORESIZE:
size = width, height = event.size[0], event.size[1]
screen = pygame.display.set_mode(size, pygame.RESIZABLE)
if pygame.display.get_active():
ballrect = ballrect.move(speed)
if ballrect.left < 0 or ballrect.right > width:
speed[0] = - speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = - speed[1]
screen.fill(BLACK)
screen.blit(ball, ballrect)
pygame.display.update()
fclock.tick(fps)
# 7
# Unit PYG03: Pygame Wall Ball Game version 8
import pygame
import sys
import os
pygame.init()
size = width, height = 600, 400
speed = [1, 1]
BLACK = 0, 0, 0
screen = pygame.display.set_mode(size, pygame.RESIZABLE) #
pygame.display.set_caption("Pygame ")
ball = pygame.image.load(os.path.join(r'C:\Users\zhj72\iCloudDrive\ \ \Python\pygame', "ball.gif"))
pygame.display.set_icon(ball)
ballrect = ball.get_rect()
fps = 300
fclock = pygame.time.Clock()
still = False
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] == 0 else (abs(speed[0]) - 1) * int(speed[0] / abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
elif event.key == pygame.K_DOWN:
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1] / abs(speed[1]))
elif event.key == pygame.K_ESCAPE:
sys.exit()
elif event.type == pygame.VIDEORESIZE:
size = width, height = event.size[0], event.size[1]
screen = pygame.display.set_mode(size, pygame.RESIZABLE)
elif event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
still = True
elif event.type == pygame.MOUSEBUTTONUP:
still = False
if event.button == 1:
ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)
elif event.type == pygame.MOUSEMOTION:
if event.buttons[0] == 1:
ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)
if pygame.display.get_active() and not still:
ballrect = ballrect.move(speed)
if ballrect.left < 0 or ballrect.right > width:
speed[0] = - speed[0]
if ballrect.right > width and ballrect.right + speed[0] > ballrect.right:
speed[0] = - speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = - speed[1]
if ballrect.bottom > height and ballrect.bottom + speed[1] > ballrect.bottom:
speed[1] = - speed[1]
screen.fill(BLACK)
screen.blit(ball, ballrect)
pygame.display.update()
fclock.tick(fps)
# 8
# Unit PYG05: Pygame Wall Ball Game Version 9
import pygame
import sys
import os
pygame.init()
size = width, height = 600, 400
speed = [1, 1]
BLACK = 0, 0, 0
screen = pygame.display.set_mode(size, pygame.RESIZABLE)
pygame.display.set_caption("Pygame ")
ball = pygame.image.load(os.path.join(r'C:\Users\zhj72\iCloudDrive\ \ \Python\pygame', "ball.gif"))
pygame.display.set_icon(ball)
ballrect = ball.get_rect()
fps = 300
fclock = pygame.time.Clock()
still = False
bgcolor = pygame.Color("black")
def RGBChannel(a):
return 0 if a < 0 else (255 if a > 255 else int(a))
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] == 0 else (abs(speed[0]) - 1) * int(speed[0] / abs(speed[0]))
elif event.key == pygame.K_RIGHT:
speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
elif event.key == pygame.K_UP:
speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
elif event.key == pygame.K_DOWN:
speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1) * int(speed[1] / abs(speed[1]))
elif event.key == pygame.K_ESCAPE:
sys.exit()
elif event.type == pygame.VIDEORESIZE:
size = width, height = event.size[0], event.size[1]
screen = pygame.display.set_mode(size, pygame.RESIZABLE)
elif event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
still = True
elif event.type == pygame.MOUSEBUTTONUP:
still = False
if event.button == 1:
ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)
elif event.type == pygame.MOUSEMOTION:
if event.buttons[0] == 1:
ballrect = ballrect.move(event.pos[0] - ballrect.left, event.pos[1] - ballrect.top)
if pygame.display.get_active() and not still:
ballrect = ballrect.move(speed[0], speed[1])
if ballrect.left < 0 or ballrect.right > width:
speed[0] = - speed[0]
if ballrect.right > width and ballrect.right + speed[0] > ballrect.right:
speed[0] = - speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = - speed[1]
if ballrect.bottom > height and ballrect.bottom + speed[1] > ballrect.bottom:
speed[1] = - speed[1]
bgcolor.r = RGBChannel(ballrect.left * 255 / width)
bgcolor.g = RGBChannel(ballrect.top * 255 / height)
bgcolor.b = RGBChannel(min(speed[0], speed[1]) * 255 / max(speed[0], speed[1], 1))
screen.fill(bgcolor)
screen.blit(ball, ballrect)
pygame.display.update()
fclock.tick(fps)
# 9 1
# Unit PYG05: Pygame Wall Ball Game Version 10
import pygame, sys
import pygame.freetype
pygame.init()
size = width, height = 600, 400
speed = [1, 1]
GOLD = 255, 251, 0
BLACK = 0, 0, 0
pos = [230, 160]
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame ")
f1 = pygame.freetype.Font("C://Windows//Fonts//msyh.ttc", 36)
f1rect = f1.render_to(screen, pos, " ", fgcolor=GOLD, size=50)
fps = 300
fclock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if pos[0] < 0 or pos[0] + f1rect.width > width:
speed[0] = - speed[0]
if pos[1] < 0 or pos[1] + f1rect.height > height:
speed[1] = - speed[1]
pos[0] = pos[0] + speed[0]
pos[1] = pos[1] + speed[1]
screen.fill(BLACK)
f1rect = f1.render_to(screen, pos, " ", fgcolor=GOLD, size=50)
pygame.display.update()
fclock.tick(fps)
# 10 2
# Unit PYG05: Pygame Wall Ball Game Version 11
import pygame, sys
import pygame.freetype
pygame.init()
size = width, height = 600, 400
speed = [1, 1]
GOLD = 255, 251, 0
BLACK = 0, 0, 0
pos = [230, 160]
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame ")
f1 = pygame.freetype.Font("C://Windows//Fonts//msyh.ttc", 36)
f1surf, f1rect = f1.render(" ", fgcolor=GOLD, size=50)
fps = 300
fclock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if pos[0] < 0 or pos[0] + f1rect.width > width:
speed[0] = - speed[0]
if pos[1] < 0 or pos[1] + f1rect.height > height:
speed[1] = - speed[1]
pos[0] = pos[0] + speed[0]
pos[1] = pos[1] + speed[1]
screen.fill(BLACK)
f1surf, f1rect = f1.render(" ", fgcolor=GOLD, size=50)
screen.blit(f1surf, (pos[0], pos[1]))
pygame.display.update()
fclock.tick(fps)