① pygame中找不到stream:RuntimeError: Can't seek in stream
字體沒有定義
可以使用體統自帶的字體
pygame.font.SysFont("arial", 60) 替換 pygame.font.Font(None,60) 試試
② 在線等!求一個python 五子棋源代碼,最好是有「人人對弈」和「人機對弈」功能的,不勝感謝!
試試這個吧。
import numpy as np
import pygame
import sys
import traceback
import
from pygame.locals import *
pygame.init()
pygame.mixer.init()
#顏色
background=(201,202,187)
checkerboard=(80,80,80)
button=(52,53,44)
#音樂
play_chess_sound = pygame.mixer.Sound("music/play_chess.wav")
play_chess_sound.set_volume(0.2)
button_sound = pygame.mixer.Sound("music/button.wav")
button_sound.set_volume(0.2)
victor_sound = pygame.mixer.Sound("music/victory.wav")
victor_sound.set_volume(0.2)
#繪制棋盤
def Draw_a_chessboard(screen):
#填充背景色
screen.fill(background)
Background=pygame.image.load("background.jpg").convert_alpha()
screen.blit(Background,(0,0))
#畫棋盤
for i in range(21):
pygame.draw.line(screen, checkerboard, (40*i+3, 3), (40*i+3, 803))
pygame.draw.line(screen, checkerboard, (3, 40*i+3), (803, 40*i+3))
#畫邊線
pygame.draw.line(screen, checkerboard, (3, 3), (803, 3),5)
pygame.draw.line(screen, checkerboard, (3, 3), (3, 803),5)
pygame.draw.line(screen, checkerboard, (803, 3), (803, 803),5)
pygame.draw.line(screen, checkerboard, (3, 803), (803, 803),5)
#畫定位點
pygame.draw.circle(screen, checkerboard, (163, 163), 6)
pygame.draw.circle(screen, checkerboard, (163, 643), 6)
pygame.draw.circle(screen, checkerboard, (643, 163), 6)
pygame.draw.circle(screen, checkerboard, (643, 643), 6)
pygame.draw.circle(screen, checkerboard, (403, 403), 6)
#畫『悔棋』『重新開始』跟『退出』按鈕
pygame.draw.rect(screen,button,[900,350,120,100],5)
pygame.draw.rect(screen,button,[900,500,200,100],5)
pygame.draw.rect(screen,button,[900,650,200,100],5)
s_font=pygame.font.Font('font.ttf',40)
text1=s_font.render("悔棋",True,button)
text2=s_font.render("重新開始",True,button)
text3=s_font.render("退出遊戲",True,button)
screen.blit(text1,(920,370))
screen.blit(text2,(920,520))
screen.blit(text3,(920,670))
#繪制棋子(橫坐標,縱坐標,屏幕,棋子顏色(1代表黑,2代表白))
def Draw_a_chessman(x,y,screen,color):
if color==1:
Black_chess=pygame.image.load("Black_chess.png").convert_alpha()
screen.blit(Black_chess,(40*x+3-15,40*y+3-15))
if color==2:
White_chess=pygame.image.load("White_chess.png").convert_alpha()
screen.blit(White_chess,(40*x+3-15,40*y+3-15))
#繪制帶有棋子的棋盤
def Draw_a_chessboard_with_chessman(map,screen):
screen.fill(background)
Draw_a_chessboard(screen)
for i in range(24):
for j in range(24):
Draw_a_chessman(i+1,j+1,screen,map[i][j])
#定義存儲棋盤的列表,
#列表為24列24行是因為判斷是否勝利函數里的索引會超出19
#列表大一點不會對游戲有什麼影響
map=[]
for i in range(24):
map.append([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
#清零map列表
def clear():
global map
for i in range(24):
for j in range(24):
map[i][j]=0
#判斷是否勝利
def win(i, j):
k = map[i][j]
p=[]
for a in range(20):
p.append(0)
for i3 in range(i-4,i+5):
for j3 in range(j-4,j+5):
if (map[i3][j3] == k and i3 - i == j3 - j and i3 <= i and j3 <= j):
p[0]+=1
if (map[i3][j3] == k and j3 == j and i3 <= i and j3 <= j):
p[1]+=1
if (map[i3][j3] == k and i3 == i and i3 <= i and j3 <= j):
p[2]+=1
if (map[i3][j3] == k and i3 - i == j3 - j and i3 >= i and j3 >= j):
p[3]+=1
if (map[i3][j3] == k and j3 == j and i3 >= i and j3 >= j):
p[4]+=1
if (map[i3][j3] == k and i3 == i and i3 >= i and j3 >= j):
p[5]+=1
if (map[i3][j3] == k and i - i3 == j3 - j and i3 <= i and j3 >= j):
p[6]+=1
if (map[i3][j3] == k and i3 - i == j - j3 and i3 >= i and j3 <= j):
p[7]+=1
if (map[i3][j3] == k and j - j3 == i - i3 and i3 <= i + 1 and i3 >= i - 3 and j3 <= j + 1 and j3 >= j - 3):
p[8]+=1
if (map[i3][j3] == k and j == j3 and i3 <= i + 1 and i3 >= i - 3 and j3 <= j + 1 and j3 >= j - 3):
p[9]+=1
if (map[i3][j3] == k and i == i3 and i3 <= i + 1 and i3 >= i - 3 and j3 <= j + 1 and j3 >= j - 3):
p[10]+=1
if (map[i3][j3] == k and j - j3 == i - i3 and i3 >= i - 1 and i3 <= i + 3 and j3 >= j - 1 and j3 <= j + 3):
p[11]+=1
if (map[i3][j3] == k and j == j3 and i3 >= i - 1 and i3 <= i + 3 and j3 >= j - 1 and j3 <= j + 3):
p[12]+=1
if (map[i3][j3] == k and i == i3 and i3 >= i - 1 and i3 <= i + 3 and j3 >= j - 1 and j3 <= j + 3):
p[13]+=1
if (map[i3][j3] == k and i - i3 == j3 - j and i3 <= i + 1 and i3 >= i - 3 and j3 >= j - 1 and j3 <= j + 3):
p[14]+=1
if (map[i3][j3] == k and i3 - i == j - j3 and i3 >= i - 1 and i3 <= i + 3 and j3 <= j + 1 and j3 >= j - 3):
p[15]+=1
if (map[i3][j3] == k and j - j3 == i - i3 and i3 <= i + 2 and i3 >= i - 2 and j3 <= j + 2 and j3 >= j - 2):
p[16]+=1
if (map[i3][j3] == k and j == j3 and i3 <= i + 2 and i3 >= i - 2 and j3 <= j + 2 and j3 >= j - 2):
p[17]+=1
if (map[i3][j3] == k and i == i3 and i3 <= i + 2 and i3 >= i - 2 and j3 <= j + 2 and j3 >= j - 2):
p[18]+=1
if (map[i3][j3] == k and i - i3 == j3 - j and i3 <= i + 2 and i3 >= i - 2 and j3 <= j + 2 and j3 >= j - 2):
p[19]+=1
for b in range(20):
if p[b]==5:
return True
return False
#繪制提示器(類容,屏幕,字大小)
def text(s,screen,x):
#先把上一次的類容用一個矩形覆蓋
pygame.draw.rect(screen,background,[850,100,1200,100])
#定義字體跟大小
s_font=pygame.font.Font('font.ttf',x)
#定義類容,是否抗鋸齒,顏色
s_text=s_font.render(s,True,button)
#將字放在窗口指定位置
screen.blit(s_text,(880,100))
pygame.display.flip()
#用於控制順序
t=True
#用於結束游戲後阻止落子
running=True
#主函數
def main():
#將 t,map,running設置為可改的
global t,map,running,maps,r,h
#將map置零
clear()
#定義儲存所有棋盤狀態的列表(用於悔棋)
map2=.deep(map)
maps=[map2]
#定義窗口
screen = pygame.display.set_mode([1200,806])
#定義窗口名字
pygame.display.set_caption("五子棋")
#在窗口畫出棋盤,提示器以及按鈕
Draw_a_chessboard(screen)
pygame.display.flip()
clock=pygame.time.Clock()
while True:
#只有running為真才能落子,主要用於游戲結束後防止再次落子
if running:
if t:
color=1
text('黑棋落子',screen,54)
else:
color=2
text('白棋落子',screen,54)
for event in pygame.event.get():
#點擊x則關閉窗口
if event.type ==pygame.QUIT:
pygame.quit()
sys.exit()
#點擊窗口裡面類容則完成相應指令
elif event.type == MOUSEBUTTONDOWN:
if event.button == 1:
x,y=event.pos[0],event.pos[1]
for i in range(19):
for j in range(19):
#點擊棋盤相應位置
if i*40+3+20<x<i*40+3+60 and j*40+3+20<y<j*40+3+60 and not map[i][j] and running:
#在棋盤相應位置落相應顏色棋子
Draw_a_chessman(i+1,j+1,screen,color)
#播放音效
play_chess_sound.play(0)
#在map裡面記錄落子位置
map[i][j]=color
#將map存入maps
map3=.deep(map)
maps.append(map3)
#判斷落子後是否有五子一線
if win(i,j):
if t:
text('黑棋勝利,請重新游戲',screen,30)
else:
text('白棋勝利,請重新游戲',screen,30)
#播放音效
victor_sound.play(0)
#阻止再往棋盤落子
running=False
pygame.display.flip()
t=not t
#如果點擊『重新開始』
if 900<x<1100 and 500<y<600:
#取消阻止
running=True
#播放音效
button_sound.play(0)
#重新開始
main()
#點擊『退出遊戲』,退出遊戲
elif 900<x<1100 and 650<y<750:
#播放音效
button_sound.play(0)
pygame.quit()
sys.exit()
#點擊『悔棋』
elif 900<x<1020 and 350<y<450 and len(maps)!=1:
#播放音效
button_sound.play(0)
#刪除maps里最後一個元素
del maps[len(maps)-1]
#再將最後一個元素給map
map=.deep(maps[len(maps)-1])
#切換順序
t=not t
#將map顯示出來
Draw_a_chessboard_with_chessman(map,screen)
#悔棋完成,阻止再次悔棋
x,y=0,0
clock.tick(60)
if __name__ == "__main__":
try:
main()
except SystemExit:
pass
except:
traceback.print_exc()
pygame.quit()
input()
③ 有人用過pygame subset for android沒
你好,很高興為你解答,用得還不錯,可以在pc上開發,不用開模擬器,~如果你認可我的回答,請及時點擊【採納為滿意回答】按鈕
~~手機提問的朋友在客戶端右上角評價點【滿意】即可。
~你的採納是我前進的動力
~~O(∩_∩)O,記得好評和採納,互相幫助,謝謝。
④ python做游戲好用嗎
Python做游戲是完全可以的,而且也非常簡單,有一個專門針對游戲開發的平台(模塊)—pygame,允許開發人員快速設計游戲而又擺脫了低級語言的束縛,下面我簡單介紹一下這個模塊的安裝和使用:
1、首先,安裝pygame模塊,這個直接在cmd窗口中輸入命令「pip install pygame」就行,如下,很快就能安裝成功:
2、安裝成功後,我們就可以在Python的site-packages裡面找到剛才安裝的pygame模塊,下面就有pygame自帶的游戲示例examples,如下:
相關推薦:《Python入門教程》
3、這里我們測試幾個小示例,非常簡單,類似於運行普通Python腳本一樣,直接Python+腳本名運行就行:
第一個示例—alien.py,類似於打飛機的小游戲,可以左右移動,發射子彈:
效果如下,玩起來還不錯:
第二個示例—liquid.py,類似於滾動的波紋一樣,可以來回滾動:
效果如下,看著還不錯:
當然,還有其他游戲腳本,像OpenGL 3D立體效果等,這里就不多說了,可以自行測試,命令都是一樣的。
4、pygame官網也有許多豐富的游戲示例,都有對應的源碼可供開發者學習和參考,感興趣的朋友可以自己下載嘗試一下:
至此,我們就完成了pygame模塊的安裝和簡單使用。總的來說,這個模塊非常不錯,對於開發小型游戲來說,非常快速也非常容易,當然,你也可以把它當做Python桌面GUI庫來使用,也非常不錯,但是如果你想開發大型游戲,追求游戲性能和體驗的話,建議還是使用Unity3D或者C++,效果更好,網上也有相關資料和教程可供參考,感興趣的話,可以搜一下。
⑤ python 適合做什麼開發
主要可以做小程序,爬蟲程序,用於系統編程等等還是很廣泛的。
Python 的應用領域分為下面幾類。下文將介紹一些Python 具體能幫我們做的事情。但我們不會對各個工具進行深入探討,如果你對這些話題感興趣,請從老男孩python培訓網站或其他一些資源中獲取更多的信息。
1.python可以用於系統編程 Python 對操作系統服務的內置介面,使其成為編寫可移植的維護操作系統的管理工具和部件(有時也被稱為Shell 工具)的理想工具。
Python 程序可以搜索文件和目錄樹,可以運行其他程序,用進程或線程進行並行處理等等。
2.python可以用於用戶圖形介面
Python 的簡潔以及快速的開發周期十分適合開發GUI 程序。此外,基於C++ 平台的工具包wxPython GUI API 可以使用Python 構建可移植的GUI 。
諸如PythonCard 和Dabo 等一些高級工具包是構建在wxPython 和Tkinter 的基礎API 之上的。通過適當的庫,你可以使用其他的GUI 工具包,例如,Qt 、GTK 、MFC 和Swing 等。
3.python可以用於Internet 腳本
Python 提供了標准Internet 模塊,使Python 能夠廣泛地在多種網路任務中發揮作用,無論是在伺服器端還是在客戶端都是如此。
而且網路上還可以獲得很多使用Python 進行Internet 編程的第三方工具此外,Python 涌現了許多Web 開發工具包,例如,Django 、TurboGears 、Pylons 、Zope 和WebWare ,使Python 能夠快速構建功能完善和高質量的網站。
4.python可以用於組件集成
在介紹Python 作為控制語言時,曾涉及它的組件集成的角色。Python 可以通過C/C++ 系統進行擴展,並能夠嵌套C/C++ 系統的特性,使其能夠作為一種靈活的粘合語言,腳本化處理其他系統和組件的行為。
例如,將一個C庫集成到Python 中,能夠利用Python 進行測試並調用庫中的其他組件;將Python 嵌入到產品中,在不需要重新編譯整個產品或分發源代碼的情況下,能夠進行產品的單獨定製。
5.python能用於資料庫編程
對於傳統的資料庫需求,Python 提供了對所有主流關系資料庫系統的介面,Python 定義了一種通過Python 腳本存取SQL 資料庫系統的可移植的資料庫API ,這個API 對於各種底層應用的資料庫系統都是統一的。
所以一個寫給自由軟體MySQL 系統的腳本在很大程度上不需改變就可以工作在其他系統上(例如,Oracle )-- 你僅需要將底層的廠商介面替換掉就可以實現。
6.python 可以用於快速原型
對於Python 程序來說,使用Python 或C編寫的組件看起來都是一樣的。正因為如此,我們可以在一開始利用Python 做系統原型,之後再將組件移植到C或C++ 這樣的編譯語言上。
7.python 可以用於數值計算和科學計算編程
我們之前提到過的NumPy 數值編程擴展包括很多高級工具,通過將Python 與出於速度考慮而使用編譯語言編寫的數值計算的常規代碼進行集成,其他一些數值計算工具為Python 提供了動畫、3D 可視化、並行處理等功能的支持。
8.python 可以用於游戲、圖像、人工智慧、XML 、機器人等
Python 的應用領域很多,遠比這里提到的多得多。
例如,可以利用pygame 系統使用Python 對圖形和游戲進行編程;用PIL 和其他的一些工具進行圖像處理;用PyRo 工具包進行機器人控制編程。
當然python能乾的事情不止上面這么多領域,相信你在學完老男孩python自動化架構課程就能知道python應用的領域之多了。
Python (英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/), 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。
Python是純粹的自由軟體,源代碼和解釋器CPython遵循 GPL(GNUGeneral Public License)許可。Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮進。
Python具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。需要注意的是在您使用擴展類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。
7月20日,IEEE發布2017年編程語言排行榜:Python高居首位 。
2018年3月,該語言作者在郵件列表上宣布 Python 2.7將於2020年1月1日終止支持。用戶如果想要在這個日期之後繼續得到與Python 2.7有關的支持,則需要付費給商業供應商。
⑥ linux 怎麼安裝pygame
直接通過源代碼進行編譯安裝,方法如下:
I used
./configure --prefix=$HOME
make
make install
to install sdl2, after which I tried to install pygame by
cd ../pygame-1.9.1release/
python setup.py install
but I am getting an error:
linuxnx:~/python/library/pygame-1.9.1release> python setup.py install
WARNING, No "Setup" File Exists, Running "config.py"
Using UNIX configuration...
Hunting dependencies...
sh: sdl-config: command not found
WARNING: "sdl-config" failed!
sh: smpeg-config: command not found
WARNING: "smpeg-config" failed!
Unable to run "sdl-config". Please make sure a development version of SDL is insta
⑦ python 是什麼類型的語言
一、python的定義
Python是一種計算機程序設計語言。翻譯成中文是巨蛇的意思。是一種動態的、面向對象的腳本語言,最初被設計用於編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越來越多被用於獨立的、大型項目的開發。
二、python的特點
1、軟體質量
在很大程度上,python更注重可讀性、一致性和軟體質量,python的設計致力於可讀性,帶來了比其他語言更優秀的可重用性和可維護性,python秉承了一種獨特的簡潔和高可讀性的語法,以及一種高度一致的編程序模式。
2、提高開發者效率
相對於C、C++、Java等編輯/靜態類型語言,python的開發效率提升了3-5倍,也就是說代碼量是其他編程語言的1/5-1/3,而且無需編譯、鏈接步驟,提高程序員效率
3、程序可移植性
絕大多數python程序能不做任何修改即可在所有主流計算機平台上運行,此外,python提供多種可選的獨立程序,如用戶圖形界面、資料庫接入、基於web系統、還提供了操作系統介面等。
(7)pygame源碼編譯android擴展閱讀:
python的用途與應用:
1、Web應用開發
伺服器端編程,具有豐富的Web開發框架,如Django和TurboGears,快速完成一個網站的開發和Web服務。典型如國內的豆瓣、果殼網等;國外的Google、Dropbox等。
2、系統網路運維
在運維的工作中,有大量重復性工作的地方,並需要做管理系統、監控系統、發布系統等,將工作自動化起來,提高工作效率,這樣的場景Python是一門非常合適的語言。
3、科學與數字計算
Python被廣泛的運用於科學和數字計算中,例如生物信息學、物理、建築、地理信息系統、圖像可視化分析、生命科學等,常用numpy、SciPy、Biopython、SunPy等。
4、3D游戲開發
Python有很好的3D渲染庫和游戲開發框架,有很多使用Python開發的游戲,如迪斯尼卡通城、黑暗之刃。常用PyGame、Pykyra等和一個PyWeek的比賽。
⑧ 求一個python用pygame做的游戲skier的png圖片,skier_down.png,sk
網頁鏈接圖片壓縮包,直接下載就能用,不用去別的網站,不客氣,哈哈哈,我最近剛好在編這個游戲,我也找了很久的,祝大家一遍成功哦
⑨ python3.5 的flappy bird pygame編的
總結幾個關鍵詞吧,將來如果看到這篇博文,自己還能對當時用到的技術有點印象:
1. 狀態機:重構了游戲代碼,主循環使用了狀態機分接不同狀態,update 游戲邏輯 , 使代碼變得清晰利於維護
2. OBB 碰撞檢測:AABB 碰撞檢測 無法 達到需求,參考了 OBB 碰撞檢測的原理,實現了游戲的碰撞檢測
3. cx_Freeze:python 代碼打包 exe ,使用了 cx_Freeze 這個庫,這個庫非常好用,更難得的是支持 python3
遇到的問題有:
1. 沒有仔細研究 pygame 如何操作 surface 的 alpha 透明度
2. cx_Freeze 打包出來的 exe, 在遇到調用 pygame.mixer.music 的 load() 函數時,會報錯。沒有仔細查原因。
3. 對 python 語言本身的一些特性不熟悉,一些特性的實現可能並不符合 python 的標准用法。
總的來說,我對這套代碼的質量還算滿意,對這個游戲核心玩法的還原度也比較認可。寫在這里,記錄我第一次用 python 寫了個行數較多的,面向對象的程序。
可惜用 pygame 寫出來的東西沒法移植到手機,每每想到這一點,就讓我覺得這東西實在沒啥前途。。我對 python 的理解 可能不夠,但是我印象里 python 也是一個解釋執行的語言,也可以和 c++ 相互調用,為啥不能在手機上 搞個python 解釋器來運行 python 程序 ? 如果 python 解釋器是 c++ 寫的,python 不能像 lua 等腳本語言一樣,內嵌到 手機 開發的 app 里?如果 python 程序可以移植到手機上執行的話, pygame 基於 SDL ,理論上 SDL 也是基於 OpenGL 的,那麼理論上 pygame 寫出來的游戲,應該也能移植到 手機上 才對。。
所以說。。我對 python 的理解還是不足,暫時沒法從知識上解答上面的幾個問題。下個目標還是專心本職工作,學習 iOS Android 原生開發,更深入的去學習平台跨越性更好的 游戲引擎,爭取多寫一些 在手機上跑的,完成度最少達到這次寫的 flappy bird 的程度的 東西吧。
主要參考的文章地址是:
http //simple-is-better.com/news/361
全部代碼以及打包出來的 exe 都上傳在這里,給N年後回頭看的自己留個念想,也提供給比我更新的手, 想了解 pygame 的人做個參考
http //download.csdn.net/detail/korekara88730/9416635