pygame及更早的學習(寫遊戲)隨筆
python吧
全部回复
仅看楼主
level 10
喵喵陳 楼主
百度网盘
嗯,這是我小時第一個學會的遊戲加了點料轉成py....誰能說這沒有GUI的不是遊戲!
不過還是由https://tieba.baidu.com/p/8898716003
說起吧.......涂了的是跟圖1重了的,省得干擾....
百度网盘 刪掉多的也有這段......
首先.....還是說import 吧....這是把一個模組引入的意思....就跟你把快遞開箱來用差不多...
下面pygame.init()就是把pygame中很多東西..我也沒搞懂是初始化還是喚醒....總之有一堆功能要init()後才能用...pygame.init()一次就全準備好了....不過你也可以分開init()只叫用的....
win=pygame.display.get_desktop_sizes()[0] 這是拿到屏幕的數據了,不過有很多我只要list中的第一組....
ww=win[0]把前面的win斬成兩個變數...
wh=win[1]
screen = pygame.display.set_mode((ww/4*3,wh/4*3),pygame.NOFRAME)這行的 pygame.display.set_mode是
整個GUI,整個程序我應為最重要的code,沒有之一......這就是打開一個叫screen的視窗,沒了display就沒有視窗,
(ww/4*3,wh/4*3)定義了視窗大小,pygame.NOFRAME只是把正常視窗上面討厭的程序名,X鍵關了,可以刪的這一
個位有很多功能例如全屏,視窗大小可調整跟其他不知幹甚麼的...自己去pygame官網看....當想用複數功能時就用
+加起來例如pygame.FULLSCREEN+pygame.NOFRAME+pygame.RESIZABLE不過沒人會這樣做......
clock = pygame.time.Clock() 這我只知道後面clock.tick(x)一秒多少幀畫面要用....至於時間....我一向用datetime....
fontlist把pygame讀到的字型列表了....font=pygame.font.SysFont(fontlist[27],12)就是在系統字型中拉了第28種(我
的機的....)來用,大小是12....
map = pygame.Surface((48,48*6)) 後面改成mapt的是一個只存在在記憶體中的畫面()中是像素的面積,除了這種因
為生氣隨手打的垃圾程式,沒人會叫電腦這時候算48*6之類的......早算好這填數字就好....更別說後面那些「圖」了
mapt.fill((255,255,255))給mapt這圖填滿(255,255,255)的顏色....也就是白色..相關看RGB色的東西
maptstr = font.render('平地',True,(0,0,0),(128,128,0)) 做出'平地'這字串,True我不知道用途,兩組()分別是文字色跟底色
strpos = maptstr.get_rect() 叫出文字位置
strpos.center = 24,24 重定義文字的中心位置...這堆dir()就知道了...
mapt.blit(maptstr,strpos) 把strpos改成(123,456)那maptstr位置會到了(123,456)而不是strpos...
blit很重要....你準備了字跟圖...記得要用blit貼到圖/視窗上......
screen.blit(mapt,(0,0)) 相比前面mapt把maptstr貼到strpos,這就是screen把mapt貼到(0,0)了...
screen.blit(me,(70,0))
pygame.display.flip()把視窗更新了......不然你怎麼畫,視窗都沒反應喲......
其他的.....我沒吃透,就知道想正常關視窗要有pygame.QUIT那塊,不然退出時會報錯......
2024年02月18日 20点02分 1
level 10
喵喵陳 楼主
[有效] https://pan.baidu.com/s/12u473DkP8EehBIkeqN5btA?pwd=ja94
中間的跳過,直接到能動的半成品吧......
char.set_colorkey((255,255,255)) 設了(255,255,255)做透明色.
pygame.draw.rect(ctrlpad,(55,55,55),(0,48,144,48)) 在ctrlpad的畫面的0,48的位置用55,55,55的色彩畫144,48的四方形
pygame.draw.circle(ctrlpad,(55,55,55),(264,72),22)同樣的畫面色彩在(264,72)畫半徑22的圓
font=pygame.font.SysFont(fontlist[27],40) 重新定義字型大小
f=font.render('上',True,(255,255,255)) 定義了f是'上'字串,色彩255,255,255也就是白色
fp=f.get_rect() 取得了f的方塊...一切為了下句
fp.center = 24+48,24 fp的正中是72,24,除了center還有很多,請print(dir(fp)看......)
ctrlpad.blit(f,fp) 把f貼到ctrlpad上
for呀, def呀, map={}呀, map[x,y]={'tile':tile,'mt':mt,}還有+-*/%=呀, +=, -=, self.hp=eval('9'*4200), open....python的基礎....嗯,我基本沒吃透就大家不懂的請回吧求救, 我幫不了你們的......
好像忘了今次的重點mouse跟keyboard的key....
先說keyboard的key我為什麼一個都沒用......因為我沒啃pygame的key模組...原因..未啃到...
mouse為了在pygame中用才提前啃了部分
if(keyon[0]==-1)&(pygame.mouse.get_pressed()[0]==True):在while之前定義了keyon=[-1,0], 沒人按左鍵就不會變....除非我又給別的變數用了keyon(這多半老喵痴呆了....)當pygame.mouse.get_pressed()[0]==True時就是左鍵被按了....
按鈕感覺程式[有效] https://pan.baidu.com/s/1kzmxgBiq0s2x4xchMubBow?pwd=hf33
keyon=pygame.mouse.get_pos() 按了左鍵keyon就被滑鼠的位置蓋寫了,keyon[0]必然是0或正整數
if(keyon[0]>-1)&(pygame.mouse.get_pressed()[0]==False):當感覺到左鍵放開就執行...
keyon = doclick(keyon,pygame.mouse.get_pos()) 然後'我'的行動都是基本功了......遊戲除了找GUI跟畫圖......其他好易的......
2024年02月20日 12点02分 2
level 10
喵喵陳 楼主
[有效] https://pan.baidu.com/s/1sopSFG4fUVYOIrzjrcC9_g?pwd=hmvs
img = pygame.image.load('C:\picture\pkk.png') <-把圖讀出來...
nimg = pygame.transform.scale(img,(64,64)) <--把剛才讀的圖縮放成64,64的新變數
imgpos = nimg.get_rect() 找到nimg的中心點...然後就把這中心點重疊到剛才開的48,48的圖的中心點...
print(pygame.image.tostring(pic,'RGBX')) 最後把圖變成byte字串....
[有效] https://pan.baidu.com/s/1hnlnDacd_qeLEWRwJuD7XA?pwd=zssa
嗯,python.exe說他不挑嘴的,只要內容是正確的py code就可以了....
先把剛才的byte貼上來變成p字串...
pic = pygame.image.frombytes(p,(48,48),'RGBA') 搞定....把圖打包進code了...
嗯,一張圖有pixel長*寬*4 bytes
2024年02月21日 09点02分 3
1