Python游戲開發(fā)
前言
代碼量
畫圖庫(kù)
導(dǎo)包畫圖
起別名
坐標(biāo)
抬筆與落筆
畫筆大小
設(shè)置背景顏色
里面放16進(jìn)制的顏色
小案例
前進(jìn)
turtle.forward(200)
注意代碼的優(yōu)雅
變量
數(shù)據(jù)類型
數(shù)組
type
type 可以查看數(shù)據(jù)的類型
字符串
三引號(hào)
三引號(hào)可以在里面換行
雙引號(hào)
雙引號(hào)換行也可以換行,但是要添加換行符號(hào)
單引號(hào)
在單引號(hào)里可以放雙引號(hào)
去掉雙引號(hào)的功能
布爾類型
有序容器
約等于 java 中的數(shù)組,但它更像集合
注意:數(shù)組和集合不一樣 [ ] 定義數(shù)組
無(wú)序容器
強(qiáng)制類型轉(zhuǎn)換
int (a)
特性
輸出語(yǔ)句可有添加各種參數(shù)
格式化輸出
java 中的格式化輸出
游戲庫(kù)
游戲庫(kù)
下載并確定游戲庫(kù)
這個(gè)代碼下的是國(guó)外的,利用下面這個(gè)代碼可以下載國(guó)內(nèi)的鏡像文件
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame
python -m pygame.examples.aliens
游戲初始化
元組合列表
末尾添加
列表數(shù)據(jù)沒有限定想放啥就放啥
列表取數(shù)據(jù)
列表名[下標(biāo)]
列表可以放列表
獲取數(shù)組中的數(shù)組的值
元組
元組不可以添加數(shù)據(jù)
如下圖
元組是有序容器,列表也是
元組內(nèi)部的數(shù)據(jù)不可以變,列表可變
屏幕尺寸
這里可以用列表[]
也可以用元組()
窗口標(biāo)題
pygame.display.set_caption("窗口標(biāo)題")
窗體背景顏色
注意
# 導(dǎo)入游戲庫(kù)
import pygame
# 初始化
pygame.init()
# 游戲代碼
# python 中的元組數(shù)據(jù)類型
screen_size = (600 , 800) # 屏幕尺寸
# 游戲庫(kù).顯示模塊.set_mode方法(參數(shù))
screen = pygame.display.set_mode(screen_size)
# 設(shè)置背景顏色
bgColor = (233, 231, 233)
screen.fill(bgColor)
pygame.display.update()
# 窗口標(biāo)題
pygame.display.set_caption("窗口標(biāo)題")
while True:
pass
# 回收
pygame.quit()
坐標(biāo)系
已左上角做原點(diǎn),X軸往右越大,Y軸越往下越大
繪制文字
渲染 (字體 , 是否抗鋸齒 , 顏色)
更新屏幕
繪制字體三大步驟
# 獲取字體
font_name = "simsun"
font_size = 60
title_font = my_font = pygame.font.SysFont(font_name, font_size)
# 利用字體來(lái)寫字
content = "當(dāng)前字體"
font_color = (1, 254, 199)
font_obj = title_font.render(content, True, font_color)
# 在屏幕上繪制 這個(gè)字體
font_pos = (50, 100) # 字體位置
screen.blit(font_obj, font_pos)
# 更新屏幕顯示
pygame.display.update()
時(shí)間等待
更新得分
# 導(dǎo)入游戲庫(kù)
import pygame
# 導(dǎo)入時(shí)間模塊
import time
# 初始化
pygame.init()
# 游戲代碼
# python 中的元組數(shù)據(jù)類型
screen_size = (600, 800) # 屏幕尺寸
# 游戲庫(kù).顯示模塊.set_mode方法(參數(shù))
screen = pygame.display.set_mode(screen_size)
# 窗口標(biāo)題
pygame.display.set_caption("窗口標(biāo)題")
i = 0
while True:
i += 1
# sleep 睡覺的意思 , 讓我的程序睡一秒
time.sleep(1)
# 更新得分
# 重新用顏色填充
# 設(shè)置背景顏色
bgColor = (233, 231, 233)
screen.fill(bgColor)
# 獲取字體
font_name = "simsun"
font_size = 60
title_font = my_font = pygame.font.SysFont(font_name, font_size)
# 利用字體來(lái)寫字
content = "當(dāng)前字體" + str(i)
font_color = (1, 254, 199)
font_obj = title_font.render(content, True, font_color)
# 在屏幕上繪制 這個(gè)字體
font_pos = (50, 100) # 字體位置
screen.blit(font_obj, font_pos)
# 更新屏幕顯示
pygame.display.update()
pass
# 回收
pygame.quit()
遍歷數(shù)組和判斷
這里的for 和 java 中foreach 差不多
事件列表
# 導(dǎo)入游戲庫(kù)
import pygame
# 導(dǎo)入時(shí)間模塊
import time
# 初始化
pygame.init()
# 游戲代碼
# python 中的元組數(shù)據(jù)類型
screen_size = (600, 800) # 屏幕尺寸
# 游戲庫(kù).顯示模塊.set_mode方法(參數(shù))
screen = pygame.display.set_mode(screen_size)
# 窗口標(biāo)題
pygame.display.set_caption("窗口標(biāo)題")
i = 0
while True:
# 事件監(jiān)控(監(jiān)聽)
# 獲取事件的列表
events = pygame.event.get() # 獲取所有的時(shí)間
# 打印時(shí)間列表中有多秒個(gè)時(shí)間
l = len(events)
print(l, events)
# 遍歷事件列表[時(shí)間對(duì)象1, 時(shí)間對(duì)象2。 時(shí)間對(duì)象3]
for temp_event in events:
# 事件判斷,如果事件的類型是退出時(shí)間
if temp_event.type == pygame.QUIT:
# 程序結(jié)束
exit(0)
# 計(jì)數(shù)器加一
i += 1
# sleep 睡覺的意思 , 讓我的程序睡一秒
time.sleep(1)
# 更新得分
# 重新用顏色填充
# 設(shè)置背景顏色
bgColor = (233, 231, 233)
screen.fill(bgColor)
# 獲取字體
font_name = "simsun"
font_size = 60
title_font = my_font = pygame.font.SysFont(font_name, font_size)
# 利用字體來(lái)寫字
content = "當(dāng)前字體" + str(i)
font_color = (1, 254, 199)
font_obj = title_font.render(content, True, font_color)
# 在屏幕上繪制 這個(gè)字體
font_pos = (50, 100) # 字體位置
screen.blit(font_obj, font_pos)
# 更新屏幕顯示
pygame.display.update()
pass
# 回收
pygame.quit()
# 導(dǎo)入游戲庫(kù)
import pygame
# 導(dǎo)入時(shí)間模塊
import time
# 初始化
pygame.init()
# 游戲代碼
# python 中的元組數(shù)據(jù)類型
screen_size = (600, 800) # 屏幕尺寸
# 游戲庫(kù).顯示模塊.set_mode方法(參數(shù))
screen = pygame.display.set_mode(screen_size)
# 窗口標(biāo)題
pygame.display.set_caption("窗口標(biāo)題")
i = 0
while True:
# 事件監(jiān)控(監(jiān)聽)
# 獲取事件的列表
events = pygame.event.get() # 獲取所有的時(shí)間
# 打印時(shí)間列表中有多秒個(gè)時(shí)間
l = len(events)
print(l, events)
# 遍歷事件列表[時(shí)間對(duì)象1, 時(shí)間對(duì)象2。 時(shí)間對(duì)象3]
for temp_event in events:
# 事件判斷,如果事件的類型是退出時(shí)間
if temp_event.type == pygame.QUIT:
# 程序結(jié)束
exit(0)
# 事件判斷,空格的點(diǎn)擊事件
if temp_event.type == pygame.KEYDOWN:
# 只捕捉A的按下時(shí)間
if temp_event.key == pygame.K_a:
print("a被按下")
if temp_event.key == pygame.K_b:
print("b被按下")
# 計(jì)數(shù)器加一
i += 1
# sleep 睡覺的意思 , 讓我的程序睡一秒
time.sleep(1)
# 更新得分
# 重新用顏色填充
# 設(shè)置背景顏色
bgColor = (233, 231, 233)
screen.fill(bgColor)
# 獲取字體
font_name = "simsun"
font_size = 60
title_font = my_font = pygame.font.SysFont(font_name, font_size)
# 利用字體來(lái)寫字
content = "當(dāng)前字體" + str(i)
font_color = (1, 254, 199)
font_obj = title_font.render(content, True, font_color)
# 在屏幕上繪制 這個(gè)字體
font_pos = (50, 100) # 字體位置
screen.blit(font_obj, font_pos)
# 更新屏幕顯示
pygame.display.update()
pass
# 回收
pygame.quit()
播放音效
# 導(dǎo)入游戲庫(kù)
import pygame
# 導(dǎo)入時(shí)間模塊
import time
# 初始化
pygame.init()
# 游戲代碼
# python 中的元組數(shù)據(jù)類型
screen_size = (600, 800) # 屏幕尺寸
# 游戲庫(kù).顯示模塊.set_mode方法(參數(shù))
screen = pygame.display.set_mode(screen_size)
# 窗口標(biāo)題
pygame.display.set_caption("窗口標(biāo)題")
i = 0
# 音效
bingo = pygame.mixer.Sound("sound/bingo.wav")
# 背景音樂
pygame.mixer.music.load("sound/bgm2.mp3")
# 播放背景音樂
pygame.mixer.music.play()
while True:
# 事件監(jiān)控(監(jiān)聽)
# 獲取事件的列表
events = pygame.event.get() # 獲取所有的時(shí)間
# 打印時(shí)間列表中有多秒個(gè)時(shí)間
l = len(events)
print(l, events)
# 遍歷事件列表[時(shí)間對(duì)象1, 時(shí)間對(duì)象2。 時(shí)間對(duì)象3]
for temp_event in events:
# 事件判斷,如果事件的類型是退出時(shí)間
if temp_event.type == pygame.QUIT:
# 程序結(jié)束
exit(0)
# 事件判斷,空格的點(diǎn)擊事件
if temp_event.type == pygame.KEYDOWN:
# 只捕捉A的按下時(shí)間
if temp_event.key == pygame.K_a:
print("a被按下")
bingo.play()
if temp_event.key == pygame.K_b:
print("b被按下")
# 計(jì)數(shù)器加一
i += 1
# sleep 睡覺的意思 , 讓我的程序睡一秒
time.sleep(1)
# 更新得分
# 重新用顏色填充
# 設(shè)置背景顏色
bgColor = (233, 231, 233)
screen.fill(bgColor)
# 獲取字體
font_name = "simsun"
font_size = 60
title_font = my_font = pygame.font.SysFont(font_name, font_size)
# 利用字體來(lái)寫字
content = "當(dāng)前字體" + str(i)
font_color = (1, 254, 199)
font_obj = title_font.render(content, True, font_color)
# 在屏幕上繪制 這個(gè)字體
font_pos = (50, 100) # 字體位置
screen.blit(font_obj, font_pos)
# 更新屏幕顯示
pygame.display.update()
pass
# 回收
pygame.quit()
矩形繪制
這樣我們的文字就居中了
圓形
創(chuàng)建蛇的身體
寫完這些代碼后,我會(huì)獲得這些
需要把原來(lái)的顏色渲染注掉
兩個(gè)矩形包含
定義類
面向?qū)ο笥螒蜷_發(fā)
導(dǎo)入pygame 庫(kù)
游戲架構(gòu)設(shè)計(jì)
游戲入口提供了 init 方法
初始化方法與游戲的開始方法定義
開始方法內(nèi)部要做的事
時(shí)鐘對(duì)象
讓游戲窗口顯示
python 中成員變量放在 init 中
配置文件的定義與引入
導(dǎo)入方式一
簡(jiǎn)單好理解
常量一般大寫,在python 中沒有特定的代碼修飾他
這個(gè)是setting py文件
導(dǎo)入方式二
導(dǎo)入多個(gè)文件
如果有過(guò)多的東西導(dǎo)入就用 *
使用 * 導(dǎo)入所有要以防重名的情況
導(dǎo)入
事件
編寫
暫停
繪制屏幕
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-442310.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-442310.html
到了這里,關(guān)于Python游戲開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!