<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
貪吃蛇(也叫做貪食蛇)遊戲是一款休閒益智類遊戲,有PC和手機等多平臺版本。既簡單又耐玩。該遊戲通過控制蛇頭方向吃蛋,從而使得蛇變得越來越長。
貪吃蛇遊戲最初為單機模式,後續又陸續推出團戰模式、賞金模式、挑戰模式等多種玩法。
另外還有一種名為“貪吃蛇”鑽井測井技術,是運用旋轉導向系統、隨鑽測井系統等的油氣田定向鑽井、隨鑽測井技術,可完成海上“叢式井”和複雜油氣層的開採需求,大幅降低油氣田開發綜合成本。
依然是基於pygame庫,pip install pygame安裝即可
完整程式碼如下:
# 匯入庫 from tkinter import mainloop import pygame import time import random import sys # 顯示評分功能 def show_score(choice, color, font, size): # 建立字型物件 score_font score_font = pygame.font.SysFont(font, size) # 建立顯示錶面物件 core_surface score_surface = score_font.render('Score : ' + str(score), True, color) # 為文字表面物件建立一個矩形物件 score_rect = score_surface.get_rect() # 顯示文字 game_window.blit(score_surface, score_rect) # 遊戲結束功能 def game_over(): # 建立字型物件 my_font my_font = pygame.font.SysFont('times new roman', 50) # 建立將在其上繪製文字的文字表面 game_over_surface = my_font.render('Your Score is : ' + str(score), True, red) # 為文字表面物件建立一個矩形物件 game_over_rect = game_over_surface.get_rect() # 設定文字位置 game_over_rect.midtop = (window_x/2, window_y/4) # blit 將在螢幕上繪製文字 game_window.blit(game_over_surface, game_over_rect) pygame.display.flip() # 2 秒後我們將退出程式 time.sleep(1) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: pygame.quit() sys.exit() # 停用 pygame 庫 #pygame.quit() # 退出程式 #quit() if __name__ == '__main__': snake_speed = 10 # 視窗大小 window_x = 720 window_y = 480 # 定義顏色 black = pygame.Color(0, 0, 0) white = pygame.Color(255, 255, 255) red = pygame.Color(255, 0, 0) green = pygame.Color(0, 255, 0) blue = pygame.Color(0, 0, 255) # 初始化pygame pygame.init() # 初始化遊戲視窗 pygame.display.set_caption('貪吃蛇小遊戲') game_window = pygame.display.set_mode((window_x, window_y)) # FPS(每秒幀數)控制器 fps = pygame.time.Clock() # 定義蛇預設位置 snake_position = [100, 50] # 定義蛇體的前 4 個塊 snake_body = [ [100, 50], [90, 50], [80, 50], [70, 50] ] # 水果位置 fruit_position = [random.randrange(1, (window_x//10)) * 10, random.randrange(1, (window_y//10)) * 10] fruit_spawn = True # 設定預設的蛇方向向右 direction = 'RIGHT' change_to = direction # 初始分數 score = 0 # Main Function while True: # 處理關鍵事件 for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: change_to = 'UP' if event.key == pygame.K_DOWN: change_to = 'DOWN' if event.key == pygame.K_LEFT: change_to = 'LEFT' if event.key == pygame.K_RIGHT: change_to = 'RIGHT' # 如果同時按下兩個鍵 # 我們不想讓蛇同時向兩個方向移動 if change_to == 'UP' and direction != 'DOWN': direction = 'UP' if change_to == 'DOWN' and direction != 'UP': direction = 'DOWN' if change_to == 'LEFT' and direction != 'RIGHT': direction = 'LEFT' if change_to == 'RIGHT' and direction != 'LEFT': direction = 'RIGHT' # 移動蛇 if direction == 'UP': snake_position[1] -= 10 if direction == 'DOWN': snake_position[1] += 10 if direction == 'LEFT': snake_position[0] -= 10 if direction == 'RIGHT': snake_position[0] += 10 # 蛇體生長機制 # 如果水果和蛇發生碰撞,那麼分數將增加 10 snake_body.insert(0, list(snake_position)) if snake_position[0] == fruit_position[0] and snake_position[1] == fruit_position[1]: score += 10 fruit_spawn = False else: snake_body.pop() if score>=50: snake_speed=15 if score>=60: snake_speed=20 if score>=70: snake_speed=30 if not fruit_spawn: fruit_position = [random.randrange(1, (window_x//10)) * 10, random.randrange(1, (window_y//10)) * 10] fruit_spawn = True game_window.fill(black) for pos in snake_body: pygame.draw.rect(game_window, green, pygame.Rect( pos[0], pos[1], 10, 10)) pygame.draw.rect(game_window, white, pygame.Rect( fruit_position[0], fruit_position[1], 10, 10)) # 遊戲結束條件 if snake_position[0] < 0 or snake_position[0] > window_x-10: game_over() if snake_position[1] < 0 or snake_position[1] > window_y-10: game_over() # 觸碰蛇身 for block in snake_body[1:]: if snake_position[0] == block[0] and snake_position[1] == block[1]: game_over() # 連續顯示分數 show_score(1, white, 'times new roman', 20) # 重新整理遊戲畫面 pygame.display.update() # 每秒幀數/重新整理率 fps.tick(snake_speed)
對原始碼結構進行了進一步規範化,且原執行結果是死亡之後等待兩秒結束遊戲自動退出遊戲窗 ,改為遊戲結束之後,手動點選螢幕或者右上角X鍵退出遊戲;並增加了移動變速,初始速度為10,當積分達到50則速度為15,積分60速度20,積分70速度30,積分80速度40,飛一般的感覺
執行效果如下,操作方式方向鍵上下左右即可:
以上就是Python快速實現簡易貪吃蛇小遊戲的範例程式碼的詳細內容,更多關於Python貪吃蛇遊戲的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45