#入門顯示個視窗
import pygame#匯入PYGAME庫
pygame.init()#假惺惺初始化
screen=pygame.display.set_mode((640,320))#開闢視窗
pygame.display.set_caption("basic frame")#定義標題
bakcground=pygame.Surface(screen.get_size())#得到尺寸
bakcground=bakcground.convert()#螢幕轉換為畫素
bakcground.fill((255,255,255))#填充白色
'''
pygame.time.get_ticks—得到以毫秒為間隔的時間
pygame.time.wait—暫停程式一段時間
pygame.time.delay—暫停程式一段時間
pygame.time.set_timer—在事件佇列上重複建立事件
pygame.time.Clock—建立一個物件來幫助跟蹤時間
'''
clock=pygame.time.Clock()#定義時間鎖
running=True#定義變數
while running:#一直跑
clock.tick(30)#計時30MS,時間到了就進下面的迴圈
for event in pygame.event.get():#掃一次得到的每個結果
if event.type==pygame.QUIT:#如果當前專案有退出標誌
running=False#標誌位清0
screen.blit(bakcground,(0,0))#螢幕傳送到左上角
pygame.display.update()#更新顯示
pygame.quit()#退出
#兩球自由移動
import pygame,random,math #匯入PYTHON遊戲模組,隨機模組,數學模組
#終於可以物件導向啦!
class Ball(pygame.sprite.Sprite):#定義球類
dx=0
dy=0
x=0
y=0
def __init__(self,speed,srx,sry,radium,color):#構造器
pygame.sprite.Sprite.__init__(self)
self.x=srx
self.y=sry
self.image=pygame.Surface([radium*2,radium*2])
self.image.fill((255,255,255))
pygame.draw.circle(self.image,color,(radium,radium),radium,0)
self.rect=self.image.get_rect()
self.rect.center=(srx,sry)
direction=random.randint(20,70)
radian=math.radians(direction)
self.dx=speed*math.cos(radian)
self.dy=-speed*math.sin(radian)
def update(self):#更新
print("{} {}".format(self.x,self.y))
self.x+=self.dx
self.y+=self.dy
self.rect.x=self.x
self.rect.y=self.y
if(self.rect.left<=0 or self.rect.right >=screen.get_width()):
self.dx*=-1
elif(self.rect.top<=5 or self.rect.bottom>=screen.get_height()-5):
self.dy*=-1
allsprite=pygame.sprite.Group()#建立一個精靈組用來管理同類物件(就不能開個陣列?)
ball1=Ball(8,100,100,20,(0,0,255))#定義紅球
allsprite.add(ball1)#壓入精靈組
ball2=Ball(6,200,250,20,(255,0,0))#定義藍球
allsprite.add(ball2)##壓入精靈組
pygame.init()#初始化
screen=pygame.display.set_mode((640,320))#開視窗
pygame.display.set_caption("basic frame")#定標題
background=pygame.Surface(screen.get_size())#獲大小
background=background.convert()#螢幕翻轉,好像是標準動作,不翻就不能正常顯示
background.fill((255,255,255))#白色填充
clock=pygame.time.Clock()#開時鐘(用於重新整理)
running=True#開標誌
while running:#真
clock.tick(30)#間隔30MS
for event in pygame.event.get():#看有沒有退出的資訊
if event.type==pygame.QUIT:#有的話
running=False#更改標誌位
screen.blit(background,(0,0))#位塊傳送把背景回到左上角
ball1.update()#球一更新
ball2.update()#球二更新
allsprite.draw(screen)#繪製
pygame.display.update()#更新顯示
result=pygame.sprite.collide_rect(ball1,ball2)#檢測兩個矩形是否有重合部分
if result==True:#有
print("撞上了")#輸出
pygame.quit()#退出
#單球自由移動
import pygame,random,math#匯入三庫
pygame.init()#初始化
screen=pygame.display.set_mode((640,320))#開窗
pygame.display.set_caption("basic frame")#定標
background=pygame.Surface(screen.get_size())#獲尺
background=background.convert()#轉像
background.fill((255,255,255))#填白
ball=pygame.Surface((30,30))#畫塊
ball=ball.convert()#轉換
ball.fill((255,255,255))#填白
pygame.draw.circle(ball,(0,0,255),(15,15),15,0)#畫圓
rect1=ball.get_rect()#得矩
rect1.center=(320,45)#得中心
x,y=rect1.topleft#得左上角座標
direction=random.randint(20,70)#隨機得到一個值,20~70間
radian=math.radians(direction)#轉換為弧度
dx=5*math.cos(radian)#由弧得到到速度橫偏移
dy=-5*math.sin(radian)#由弧得到速度豎偏移
clock=pygame.time.Clock()#開鍾
running=True#標誌
while running:#等死
clock.tick(30)#間隔30MS
for event in pygame.event.get():#掃一次獲得的資訊
if event.type==pygame.QUIT:#有結束資訊
running=False#打標誌
screen.blit(background,(0,0))#背景移到左上角
x+=dx#橫偏移
y+=dy#豎偏移
rect1.center=(x,y)#得到中心
if(rect1.left<=0 or rect1.right>=screen.get_width()):#碰左右牆
dx*=-1#變方向
if(rect1.top<=5 or rect1.bottom>=screen.get_height()-5):#碰上下牆
dy*=-1#變方向
screen.blit(ball,rect1.topleft)#把球移到矩形左上角
pygame.display.update()#更新顯示
print(rect1.topleft)#輸出座標
pygame.quit()#結束
#顯示文字
import pygame
pygame.init()
screen=pygame.display.set_mode((640,320))
pygame.display.set_caption("basic frame")
bakcground=pygame.Surface(screen.get_size())
bakcground=bakcground.convert()
bakcground.fill((0,255,0))
font1=pygame.font.SysFont("新細明體",24)#定義字型
text1=font1.render("Chinese",True,(255,0,0),(255,255,255))#定義文字
bakcground.blit(text1,(20,10))#把文字移到(20,10)的位置
text2=font1.render("English",True,(0,0,255),(0,255,0))#同理
bakcground.blit(text2,(20,50))
screen.blit(bakcground,(0,0))#移屏
pygame.display.update()#更新
running=True#等死
while running:
for event in pygame.event.get():
if event.type==pygame.QUIT:
running=False
pygame.quit()
#滑鼠事件
import pygame#匯入庫
pygame.init()#初始化
screen=pygame.display.set_mode((640,320))#設定SIZE
pygame.display.set_caption("basic frame")#設定標題
background=pygame.Surface(screen.get_size())#獲取SIZE
background=background.convert()#翻轉
background.fill((255,255,255))#填白色
ball=pygame.Surface((30,30))#定義一個
ball=ball.convert()#修改影像(Surface 物件)的畫素格式
ball.fill((255,255,255))#塗白色
pygame.draw.circle(ball,(0,0,255),(15,15),15,0)#畫圓
rect1=ball.get_rect()#得到球的矩形
rect1.center=(320,45)#定義矩形的中心
x,y=rect1.topleft#得到左上角左坐
dx=3#定義變數
clock=pygame.time.Clock()#開計時器及標置位
playing=False
running=True
while running:
clock.tick(30)
for event in pygame.event.get():#這四行是標配
if event.type==pygame.QUIT:
running=False
screen.blit(background,(0,0))#把背景傳回左上角
buttons=pygame.mouse.get_pressed()#獲取當前滑鼠的按下狀態
if buttons[0]:#第0位標誌為1表示有左鍵按下
playing=True#遊戲標誌位為真
elif buttons[2]:#第2位標誌為1表示右鍵按下
playing=False#遊戲標誌位為假
if playing==True:#如果為真
mouses=pygame.mouse.get_pos()#就獲得滑鼠座標
rect1.centerx=mouses[0]#矩形中心X就是滑鼠的X
rect1.centery=mouses[1]#矩形中心y就是滑鼠的y
screen.blit(ball,rect1.topleft)#把球傳送到矩形的左上角
pygame.display.update()#更新
pygame.quit()#退出
#畫圖
import pygame
pygame.init()
screen=pygame.display.set_mode((640,320))#開窗
pygame.display.set_caption("basic frame")#定標
bakcground=pygame.Surface(screen.get_size())#獲尺
bakcground=bakcground.convert()#轉像
bakcground.fill((255,255,255))#填白
pygame.draw.circle(bakcground,(0,0,0),(150,150),130,4)#畫圓
pygame.draw.circle(bakcground,(0,0,255),(100,120),25,0)#畫圓
pygame.draw.circle(bakcground,(0,0,255),(200,120),25,0)#畫圓
pygame.draw.ellipse(bakcground,(255,0,255),[135,130,30,80],0)#畫橢圓
pygame.draw.arc(bakcground,(255,0,0),[80,130,150,120],3.4,6.1,9)#畫弧
screen.blit(bakcground,(0,0))#螢幕移回左上角
pygame.display.update()#更新
running=True
while running:#等待退出
for event in pygame.event.get():
if event.type==pygame.QUIT:
running=False
pygame.quit()
#匯入圖片
import pygame
pygame.init()
screen=pygame.display.set_mode((800,600))
pygame.display.set_caption("basic frame")
bakcground=pygame.Surface(screen.get_size())
bakcground=bakcground.convert()
bakcground.fill((0,255,0))#綠背景
image=pygame.image.load("img01.jpg")#載入圖1
image.convert()#轉為畫素
bakcground.blit(image,(20,10))#把圖片位塊傳送到點(20,10)位置
compass=pygame.image.load("img02.jpg")#下面三行同上
compass.convert()
bakcground.blit(compass,(400,50))
screen.blit(bakcground,(0,0))#下面同上一例
pygame.display.update()
running=True
while running:
for event in pygame.event.get():
if event.type==pygame.QUIT:
running=False
pygame.quit()
#水平移動&鍵盤響應
import pygame#匯入庫
pygame.init()#初始化
screen=pygame.display.set_mode((640,320))#開窗
pygame.display.set_caption("basic frame")#定標
background=pygame.Surface(screen.get_size())#獲尺
background=background.convert()#轉像
background.fill((255,255,255))#填白
ball=pygame.Surface((30,30))#定義一個影像塊,寬高都是30
ball=ball.convert()#轉變為畫素
ball.fill((255,255,255))#填白
pygame.draw.circle(ball,(0,0,255),(15,15),15,0)#在塊裡畫圓,注意圓心一定是15,15,然然半徑取15
rect1=ball.get_rect()#畫矩
rect1.center=(320,45)#定義矩形中心為320,45
x,y=rect1.topleft#得到矩形的左上角座標
dx=3#初始化
clock=pygame.time.Clock()#開鍾
running=True#標誌
while running:#等待
clock.tick(30)#重新整理間隔
for event in pygame.event.get():#等死三連
if event.type==pygame.QUIT:
running=False
keys=pygame.key.get_pressed()#鍵盤點選狀態獲取
if keys[pygame.K_RIGHT] and dx<0:#按了右鍵且當前在左移
dx*=-1#往左移
elif keys[pygame.K_LEFT] and dx>0:#按了左鍵且當前在右移
dx*=-1#往右移
screen.blit(background,(0,0))#把螢幕移到左上角
x+=dx#偏移
rect1.center=(x,y)#矩形中心獲取
if(rect1.left<=0 or rect1.right>=screen.get_width()):#如果矩形超邊界
dx*=-1#速度取反
#print("bbb")
screen.blit(ball,rect1.topleft)#把球塊移回矩形的左上角
#print("ccc")
pygame.display.update()
#print(rect1.topleft)
pygame.quit()