網(wǎng)上有很多關(guān)于pos機錯誤61代碼,「Python小游戲」Bomb Catching的知識,也有很多人為大家解答關(guān)于pos機錯誤61代碼的問題,今天pos機之家(www.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機錯誤61代碼
在人工智能熱興起后,Python這門不算很新的語言,幾乎一夜之間就“彎道超車”,占據(jù)了熱門編程語言的Top10,成為眾多人追捧的對象。在此,我想告訴大家的是,Python之所以被追捧,被大多數(shù)人所接受,那是因為它有著非常豐富的第三方的庫可供調(diào)用,語法結(jié)構(gòu)又相對簡單,在這個追求效率的時代,是非常接地氣的。不過,作為資深的軟件工程師,對于初學(xué)者,我的忠告是:Python一時爽,但千萬不要對庫產(chǎn)生依賴,計算機的經(jīng)典算法和底層結(jié)構(gòu)還是需要不斷地研究和探索的。
本篇的主要內(nèi)容是,通過Python+Pygame來制作一個簡單的小游戲--Bomb Catching Game,作為一些想以Python作為踏入軟件編程行業(yè)的小白的敲門磚。用到的工具主要有:Python-3.7.2;pygame 1.9.6;
VSCodeUserSetup-x64-1.30.2。
游戲規(guī)則:在游戲窗口單擊鼠標(biāo)左鍵開始游戲。通過在窗口內(nèi)移動鼠標(biāo)來移動窗口下方的長方形木塊,此時,會從屏幕頂部掉落1個黃色的小球,用戶必須移動木塊去接住小球。如果不能準(zhǔn)確接住,屏幕左上方的生命值會被扣除1,接住的,右上方分?jǐn)?shù)+10,黃色小球從屏幕上方的隨機位置重新開始下落。當(dāng)生命值為0時,游戲結(jié)束。
設(shè)計要點:該游戲為Python中最簡單的演示型游戲之一,主要應(yīng)用到的知識點為:鼠標(biāo)事件的監(jiān)測(按下、移動)、圖形繪制(圓形、矩形)、圖形的碰撞檢測(矩形和圓形)、分?jǐn)?shù)變量的加減運算和圖形窗口的創(chuàng)建與刷新。運行后的具體效果如下所示:
參考代碼如下:
1.import pygame, sys, random, time #引用pygame(游戲相關(guān))、sys(系統(tǒng)相關(guān))、random(隨機數(shù)相關(guān))、time(延時相關(guān))庫
2.from pygame.locals import *
3.def print_text(font, x, y, text, color=(255,255,255)): #聲明1個在窗口上進行文字顯示的自定義函數(shù)
4. imgtext = font.render(text, True, color) #定義1個文本變量,內(nèi)容為參數(shù)text傳遞的字符串,顏色為color(255,255,255),即白色字
5. screen.blit(imgtext, (x,y)) #在窗口以左上角為(0,0)點的坐標(biāo)系中,參數(shù)X、Y對應(yīng)的位置顯示該本文
6.pygame.init() #初始化pygame庫
7.screen = pygame.display.set_mode((600, 500)) #設(shè)置游戲窗口的顯示大小為寬600,高500
8.pygame.display.set_caption("Bomb catching game") #設(shè)置游戲窗口的標(biāo)題為“Bomb catching game”
9.font1 = pygame.font.Font(None, 24) #設(shè)置字體樣式及大小
10.pygame.mouse.set_visible(False) #設(shè)置游戲中鼠標(biāo)指針為不可見
11.white = 255,255,255 # 定義1個名為white的變量并賦值為3原色的白色表示數(shù)值
12.red = 220, 50, 50 # 定義1個名為red的變量并賦值為3原色的紅色表示數(shù)值
13.yellow = 230,230,50 # 定義1個名為yellow的變量并賦值為3原色的黃色表示數(shù)值
14.black = 0,0,0 # 定義1個名為black的變量并賦值為3原色的黑色表示數(shù)值
15.lives = 3 # 定義1個名為lives的變量并初始化賦值為3,用來存儲游戲過程中的剩余生命的條數(shù)
16.score = 0 #定義1個名為score的變量并初始化賦值為0,用來存儲游戲過程中的得分?jǐn)?shù)
17.game_over = True #定義1個名為game_over的變量并賦值為True,布爾型變量,游戲是否結(jié)束標(biāo)志位
18.mouse_x = mouse_y = 0 #定義2個變量并初始化賦值為0,用來存儲游戲過程中捕獲到的鼠標(biāo)的X、Y坐標(biāo)值
19.pos_x = 300 #定義1個名為POS_X的變量并初始化賦值為300,用來存儲矩形木塊的當(dāng)前位置的X坐標(biāo)值
20.pos_y = 460 #定義1個名為POS_Y的變量并初始化賦值為460,用來存儲矩形木塊的當(dāng)前位置的Y坐標(biāo)值
21.bomb_x = random.randint(0,500) #定義1個名為bomb_X的變量并初始化賦值為0~500之間的一個隨機數(shù),用來存儲圓球的當(dāng)前位置的X坐標(biāo)值
22.bomb_y = -50 #定義1個名為bomb_Y的變量并初始化賦值為-50,用來存儲圓球的當(dāng)前位置的Y坐標(biāo)值
23.vel_y = 0.7 #定義1個名為vel_y的常量并賦值為0.7,其為圓球下落的步長值
24.while True: #程序主循環(huán),一般為死循環(huán)
25. for event in pygame.event.get(): #系統(tǒng)事件消息監(jiān)測,計算機系統(tǒng)產(chǎn)生的所有操作消息,在for循環(huán)中進行遍歷,對需要進行響應(yīng)的消息進行判斷并做出響應(yīng)
26. if event.type == QUIT: #系統(tǒng)要求退出當(dāng)前的游戲窗口,即結(jié)束游戲
27. sys.exit() #退出,執(zhí)行后游戲窗口被關(guān)閉
28. elif event.type == MOUSEMOTION: #鼠標(biāo)移動了
29. mouse_x,mouse_y = event.pos #獲取當(dāng)前的鼠標(biāo)所在位置坐標(biāo),并對變量值進行刷新
30. move_x,move_y = event.rel #定義2個變量move_x、move_y
,同時獲取當(dāng)前操作鼠標(biāo)在X和Y方向上移動的相對值,并對變量進行刷新
31. elif event.type == MOUSEBUTTONUP: #鼠標(biāo)按下后抬起事件,游戲開始時提示“按下鼠標(biāo)開始游戲”后會執(zhí)行以下代碼
32. if game_over: #如果游戲結(jié)束標(biāo)志位為True,則執(zhí)行后續(xù)操作
33. game_over = False #將游戲結(jié)束標(biāo)志位置為False,開始游戲
34. lives = 3 #游戲剩余生命數(shù)恢復(fù)初始化數(shù)值
35. score = 0 #游戲得分初始化清零
36. keys = pygame.key.get_pressed() #定義列表keys,同時監(jiān)聽鍵盤按鍵事件的消息并將所有消息存入到keys列表中
37. if keys[K_ESCAPE]: #判斷是否有ESC鍵按下
38. sys.exit() #退出游戲
39. screen.fill((0,0,100)) #以RGB(0,0,100)的顏色,即藍(lán)色,繪制游戲窗口
40. if game_over: #如果游戲結(jié)束標(biāo)志位為True,則執(zhí)行后續(xù)代碼
41. print_text(font1, 100, 200, "<click to play>") #屏幕(100,200)位置以font1樣式顯示文字“<click to play>”
42. else: #游戲尚未結(jié)束,則執(zhí)行后續(xù)代碼
43. bomb_y += vel_y #改變圓球的Y坐標(biāo),使其增加0.7,即圓球在屏幕中的位置會下落0.7
44. pygame.time.wait(10) #程序等待10毫秒后再執(zhí)行后續(xù)代碼
45. if bomb_y > 500: #位置判斷,如果圓球的Y坐標(biāo)超過500,即圓球從游戲窗口的下邊框移出窗口
46. bomb_x = random.randint(0, 500)#重新隨機調(diào)整圓球的X坐標(biāo),即在游戲窗口中的左右位置
47. bomb_y = -50 #讓圓球重新回到游戲窗口上邊框以外,即圓球下落超出窗口后會重新回到上邊重新開始新1輪的下落
48. lives -= 1 #圓球超出下邊框后,即木塊沒有接住圓球,生命值減1
49. if lives == 0: #如果生命值為0后,執(zhí)行后續(xù)代碼
50. game_over = True #將游戲結(jié)束標(biāo)志位置為True,在while True的下1次循環(huán)時會觸發(fā)上述的“ if game_over:”代碼,使游戲結(jié)束。
51. elif bomb_y > pos_y: #如果圓球的Y坐標(biāo)大于木塊的Y坐標(biāo),即圓球和木塊在同1高度時,執(zhí)行后續(xù)代碼
52. if bomb_x > pos_x and bomb_x < pos_x + 120:#進一步判斷圓球和木塊的X坐標(biāo),如果圓球的X坐標(biāo)在木塊的左側(cè)和右側(cè)坐標(biāo)值之間,即此時圓球和木塊重疊,執(zhí)行后續(xù)代碼
53. score += 10 #木塊接住了圓球,游戲得分加10
54. bomb_x = random.randint(0, 500)#圓球重新隨機調(diào)整X坐標(biāo)值
55. bomb_y = -50#圓球被接住,重新回到窗口上邊框以外,進行新1輪的下落
56. pygame.draw.circle(screen, black, (bomb_x-4,int(bomb_y)-4), 30, 0) #在bomb_x左偏4,bomb_y上偏4的位置為圓心繪制1個半徑為30的黑色圓
57. pygame.draw.circle(screen, yellow, (bomb_x,int(bomb_y)), 30, 0)#在bomb_x,bomb_y的位置為圓心繪制1個半徑為30的黃色圓
58. pos_x = mouse_x #將當(dāng)前鼠標(biāo)所在位置的X值賦值給木塊的X位置,即移動木塊左右位置到當(dāng)前鼠標(biāo)所在的位置,但木塊的上下位置不變
59. if pos_x <0: #如果木塊的最左側(cè)移出了窗口最左側(cè),則執(zhí)行后續(xù)代碼
60. pos_x = 0#強制讓木塊停留在游戲窗口的最左邊框處
61. elif pos_x > 500:#如果木塊的最右側(cè)移出了窗口最右側(cè),則執(zhí)行后續(xù)代碼
62. pos_x = 500#強制讓木塊停留在游戲窗口的最右邊框處
63. pygame.draw.rect(screen, black, (pos_x-4,pos_y-4,120,40), 0)# 在pos_x左偏4,pos_y上偏4的位置為起點繪制1個長為120,寬為40的黑色矩形
64. pygame.draw.rect(screen, red, (pos_x,pos_y,120,40), 0)# 在pos_x,pos_y的位置為起點繪制1個長為120,寬為40的紅色矩形
65. print_text(font1, 0, 0, "Lives:" + str(lives))#在游戲窗口(0,0)位置,以font1樣式顯示文字“Lives:”和當(dāng)前的剩余生命值
66. print_text(font1, 500, 0, "Score:" + str(score))#在游戲窗口(500,0)位置,以font1樣式顯示文字“Score:”和當(dāng)前的游戲得分值
67. pygame.display.update() #刷新游戲窗口的顯示
注意事項:
1.對于游戲而言,窗口顯示的圖形的變化,其實就是其利用while True死循環(huán)在不斷地刷新顯示的內(nèi)容,通過修改顯示的內(nèi)容的位置或文本信息來得到圖形運動或分?jǐn)?shù)更新的效果。
2.代碼第56行和第63行為什么要各自多畫一個黑色的圓和矩形呢?其實運行整個游戲后就會發(fā)現(xiàn),圓和矩形其實各有2個,黑色圖形大部分被后畫的遮擋住了,多出來的那4個偏移,正好形成圓和矩形的陰影,使得畫面看上去更加的逼真,顯示效果更好。
3.后畫的圖案會疊加到先畫的圖案上面。
4.VSCode保存后的Python文件擴展名為.py,在windows系統(tǒng)上不能直接雙擊運行,我們可以在該.py文件的同目錄下創(chuàng)建1個.bat文件進行啟動和執(zhí)行,.bat文件的文件名沒有特殊要求,內(nèi)容為:
python bombcatching.py
本篇例程的源代碼可從百度云進行下載:
鏈接:https://pan.baidu.com/s/1EZRK5D1b7pVcSvc6tOI1yA
提取碼:hyrw
以上就是關(guān)于pos機錯誤61代碼,「Python小游戲」Bomb Catching的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機錯誤61代碼的知識,希望能夠幫助到大家!
