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