国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python貪吃蛇游戲詳細講解-帶源碼-可直接運行

這篇具有很好參考價值的文章主要介紹了Python貪吃蛇游戲詳細講解-帶源碼-可直接運行。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

之前寫了個python對象和類、封裝繼承等基礎知識,太枯燥,這次補充一個簡單的Python源碼,更直觀的理解,并加以運用。

基礎知識講解在這里:Python基礎-面向對象、對象和類、封裝、繼承、多態(tài)、項目練習

一、先了解下Pygame

Pygame是一個基于Python的游戲開發(fā)庫,它提供了一系列的工具和接口,使開發(fā)人員能夠輕松地創(chuàng)建各種類型的游戲,包括2D游戲和簡單的3D游戲。在使用Pygame之前,您需要先安裝Pygame庫。您可以通過以下命令在命令行中安裝Pygame:

pip install pygame

二、Pygame框架及步驟

  1. 初始化:先初始化Pygame。 創(chuàng)建窗口:創(chuàng)建窗口是游戲開發(fā)的第一步。可使用Pygame提供的set_mode()方法創(chuàng)建一個窗口。
  2. 處理事件:在Pygame中,所有的操作都是通過事件來實現(xiàn)的。可以使用event.get()方法獲取所有的事件,并通過事件類型來判斷用戶的操作。
  3. 更新窗口:在繪制完圖形后,需要使用pygame.display.update()方法來更新窗口,使得用戶能夠看到最新的游戲畫面。
  4. 控制游戲幀率:在Pygame中,游戲幀率是非常重要的,可以使用Pygame提供的Clock類來控制游戲的幀率。
  5. 鍵盤和鼠標輸入:在游戲中,鍵盤和鼠標輸入也是非常重要的操作??梢允褂肞ygame提供的key模塊和mouse模塊來檢測鍵盤和鼠標的輸入。
    基礎框架代碼。
import pygame
import sys
SCREEN_X = 600
SCREEN_Y = 600

def main():
    pygame.init() # 初始化游戲引擎
    screen_size = (SCREEN_X, SCREEN_Y) # 設置游戲窗口的大小
    screen = pygame.display.set_mode(screen_size) # 創(chuàng)建游戲窗口
    pygame.display.set_caption('Snake') # 設置標題
    clock = pygame.time.Clock() # 控制游戲幀率
    
    while True: # 死循環(huán),確保窗口一直顯示
	    for event in pygame.event.get(): # 遍歷所有事件
	        if event.type == pygame.QUIT: # 如果單擊關閉窗口
	            sys.exit()

	    pygame.display.update() # 更新窗口
        clock.tick(5) # 控制游戲幀率
    # 游戲退出

if __name__ == '__main__':
    main()

三、snake 類、屬性及方法

蛇類
方法: 增加/刪除 、死亡判斷、移動、改變方向
基本框架:

# 點以25為單位
class Snake:
    # 初始化各種需要的屬性 [開始時默認向右/身體塊x5]
    def __init__(self):
        self.dirction = pygame.K_RIGHT
        self.body = []
        for x in range(5):
            self.addnode()

    # 無論何時 都在前端增加蛇塊
    def addnode(self):
    # 刪除最后一個塊
    def delnode(self):
    # 死亡判斷
    def isdead(self):
    # 移動!
    def move(self):
    # 改變方向 但是左右、上下不能被逆向改變
    def changedirection(self, curkey):

四、food 類、屬性及方法

食物類
方法: 放置/移除
基本框架:

class Food:
    def __init__(self):
        self.rect = pygame.Rect(-25, 0, 25, 25)
    # 移除實物
    def remove(self):
    # 放置實物
    def set(self):

先看下運行后的游戲界面,有點丑,各位可以繼續(xù)美化:
Python貪吃蛇游戲詳細講解-帶源碼-可直接運行,Python基礎,python,游戲,pygame

五、完整代碼

import pygame
import sys
import random

# 全局定義
SCREEN_X = 600
SCREEN_Y = 600

# 蛇類
# 點以25為單位
class Snake:
    # 初始化各種需要的屬性 [開始時默認向右/身體塊x5]
    def __init__(self):
        self.dirction = pygame.K_RIGHT
        self.body = []
        for x in range(5):
            self.addnode()

    # 無論何時 都在前端增加蛇塊
    def addnode(self):
        left, top = (0, 0)
        if self.body:
            left, top = (self.body[0].left, self.body[0].top)
        node = pygame.Rect(left, top, 25, 25)
        if self.dirction == pygame.K_LEFT:
            node.left -= 25
        elif self.dirction == pygame.K_RIGHT:
            node.left += 25
        elif self.dirction == pygame.K_UP:
            node.top -= 25
        elif self.dirction == pygame.K_DOWN:
            node.top += 25
        self.body.insert(0, node)

    # 刪除最后一個塊
    def delnode(self):
        self.body.pop()

    # 死亡判斷
    def isdead(self):
        # 撞墻
        if self.body[0].x not in range(SCREEN_X):
            return True
        if self.body[0].y not in range(SCREEN_Y):
            return True
        # 撞自己
        if self.body[0] in self.body[1:]:
            return True
        return False

    # 移動!
    def move(self):
        self.addnode()
        self.delnode()

    # 改變方向 但是左右、上下不能被逆向改變
    def changedirection(self, curkey):
        LR = [pygame.K_LEFT, pygame.K_RIGHT]
        UD = [pygame.K_UP, pygame.K_DOWN]
        if curkey in LR + UD:
            if (curkey in LR) and (self.dirction in LR):
                return
            if (curkey in UD) and (self.dirction in UD):
                return
            self.dirction = curkey

# 食物類
# 方法: 放置/移除
# 點以25為單位
class Food:
    def __init__(self):
        self.rect = pygame.Rect(-25, 0, 25, 25)

    def remove(self):
        self.rect.x = -25

    def set(self):
        if self.rect.x == -25:
            allpos = []
            # 不靠墻太近 25 ~ SCREEN_X-25 之間
            for pos in range(25, SCREEN_X - 25, 25):
                allpos.append(pos)
            self.rect.left = random.choice(allpos)
            self.rect.top = random.choice(allpos)
            print(self.rect)

def show_text(screen, pos, text, color, font_bold=False, font_size=60, font_italic=False):
    # 獲取系統(tǒng)字體,并設置文字大小
    cur_font = pygame.font.SysFont("宋體", font_size)
    # 設置是否加粗屬性
    cur_font.set_bold(font_bold)
    # 設置是否斜體屬性
    cur_font.set_italic(font_italic)
    # 設置文字內容
    text_fmt = cur_font.render(text, 1, color)
    # 繪制文字
    screen.blit(text_fmt, pos)

def main():
    pygame.init() # 初始化游戲引擎
    screen_size = (SCREEN_X, SCREEN_Y) # 設置游戲窗口的大小
    screen = pygame.display.set_mode(screen_size) # 創(chuàng)建游戲窗口
    pygame.display.set_caption('Snake') # 設置標題
    clock = pygame.time.Clock() # 控制游戲幀率
    scores = 0
    isdead = False

    # 蛇/食物
    snake = Snake()
    food = Food()

    while True: # 死循環(huán),確保窗口一直顯示
        for event in pygame.event.get(): # 遍歷所有事件
            if event.type == pygame.QUIT: # 如果單擊關閉窗口
                sys.exit()
            if event.type == pygame.KEYDOWN:
                snake.changedirection(event.key)
                # 死后按space重新
                if event.key == pygame.K_SPACE and isdead:
                    return main()
        # 填充窗口顏色
        screen.fill((0, 0, 0))

        # 畫蛇身 / 每一步+1分
        if not isdead:
            scores += 1
            snake.move()
        for rect in snake.body:
            pygame.draw.rect(screen, (0, 255, 0), rect, 0)

        # 顯示死亡文字
        isdead = snake.isdead()
        if isdead:
            show_text(screen, (100, 200), 'YOU DEAD!', (227, 29, 18), False, 100)
            show_text(screen, (150, 260), 'press space to try again...', (0, 0, 22), False, 30)

        # 食物處理 / 吃到+50分
        # 當食物rect與蛇頭重合,吃掉 -> Snake增加一個Node
        if food.rect == snake.body[0]:
            scores += 50
            food.remove()
            snake.addnode()

        # 食物投遞
        food.set()
        pygame.draw.rect(screen, (255, 0, 127), food.rect, 0)
        # 顯示分數(shù)文字
        show_text(screen, (50, 500), 'Scores: ' + str(scores), (255, 0, 0))

        pygame.display.update()
        clock.tick(5)

if __name__ == '__main__':
    main()

既然都看到這里了,請點贊+關注鼓勵一下,后續(xù)繼續(xù)更新。文章來源地址http://www.zghlxwxcb.cn/news/detail-856050.html

到了這里,關于Python貪吃蛇游戲詳細講解-帶源碼-可直接運行的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 學生學python編程---實現(xiàn)貪吃蛇小游戲+源碼

    學生學python編程---實現(xiàn)貪吃蛇小游戲+源碼

    前言 這幾年人工智能技術大發(fā)展,Python因此幾乎成了第一位的語言。實際上,多年來,它不僅在軟件工程師中得到廣泛使用,也是各行業(yè)通用的專家語言,就是說,不管孩子以后做什么,都可能用得著。準備針對我自己上小學的孩子,每周抽出些時間,通過學習他們感興趣的

    2023年04月09日
    瀏覽(34)
  • wasm+pygbag讓你在網頁上也能運行Python代碼:【貪吃蛇游戲】

    wasm+pygbag讓你在網頁上也能運行Python代碼:【貪吃蛇游戲】

    最近小伙伴告訴我一種新的方法,可以使用wasm來使瀏覽器網頁能夠運行Python代碼。這一下子激起了我的興趣,因為這意味著用戶無需安裝Python環(huán)境就能直接運行我的demo,這真是太方便了。所以,我們的主要目標今天就是讓網頁能夠直接運行我的貪吃蛇游戲。貪吃蛇游戲其實

    2024年02月03日
    瀏覽(24)
  • 手把手教你使用Python寫貪吃蛇游戲(pygame,附源碼)

    貪吃蛇游戲是有史以來最受歡迎的街機游戲之一。在這個游戲中,玩家的主要目標是在不撞墻或不撞墻的情況下抓住最大數(shù)量的水果。在學習 Python 或 Pygame 時,可以將創(chuàng)建蛇游戲視為一項挑戰(zhàn)。這是每個新手程序員都應該接受的最好的初學者友好項目之一。學習構建視頻游戲

    2024年02月16日
    瀏覽(23)
  • JavaScript做一個貪吃蛇小游戲,無需網絡直接玩。

    JavaScript做一個貪吃蛇小游戲,無需網絡直接玩。

    用JavaScript做一個貪吃蛇小游戲,無需網絡 = 打開即可玩。 直接按上下左右鍵就可以玩起來了 歡迎關注我的原創(chuàng)文章:小伙伴們!我是一名熱衷于前端開發(fā)的作者,致力于分享我的知識和經驗,幫助其他學習前端的小伙伴們。在我的文章中,你將會找到大量關于前端開發(fā)的精

    2024年03月21日
    瀏覽(26)
  • python 使用socket制作聊天室-(附帶 源碼 可以直接運行)

    python 使用socket制作聊天室-(附帶 源碼 可以直接運行)

    為什么socket能做聊天室呢 socket提供了通信的服務 比如你可以創(chuàng)建tcp udp的請求 向某個主機發(fā)起通信 就像是你想和某人說話 你得會發(fā)音 就是提供了服務端的方式和客戶端的方式 服務端處理用戶發(fā)起的請求 客戶端發(fā)送數(shù)據(jù)和接收服務端的響應數(shù)據(jù) 就像你打開瀏覽器看視頻 你

    2024年02月08日
    瀏覽(20)
  • C++小游戲貪吃蛇源碼

    C++小游戲貪吃蛇源碼

    graphics.h是針對DOS下的一個C語言圖形庫 (c++也可以) 目前支持下載此頭文件的常用的有兩種: EGE, 全名Easy Graphics Engine, 是windows下的簡易繪圖庫,是一個類似BGI(graphics.h)的面向C/C++語言新手的圖形庫 EasyX, 全名EasyX Graphics Library, 是針對 Visual C++ 的免費繪圖庫,支持 VC6.0 ~ VC2022,簡單

    2024年02月13日
    瀏覽(20)
  • 前端編寫貪吃蛇游戲-附詳細代碼

    前端編寫貪吃蛇游戲-附詳細代碼

    當我們在前端編寫貪吃蛇游戲時,可以按照以下步驟進行: 先看截圖: 設置游戲板:創(chuàng)建一個HTML元素作為游戲板,可以使用 div 元素,并為其設置合適的樣式。 繪制蛇和食物:使用JavaScript代碼在游戲板上繪制蛇和食物??梢允褂肅SS樣式設置蛇和食物的樣式。 移動蛇:編寫

    2024年02月10日
    瀏覽(25)
  • 前端技術搭建貪吃蛇小游戲(內含源碼)

    上周我們實通過前端基礎實現(xiàn)了井字游戲,今天還是繼續(xù)按照我們原定的節(jié)奏來帶領大家完成一個貪吃蛇游戲,功能也比較簡單簡單,也是想借助這樣一個簡單的功能,然后來幫助大家了解我們JavaScript在前端中的作用, 在前面的文章當中我們也提及到我們在本系列的專欄是

    2024年02月06日
    瀏覽(20)
  • C語言項目實戰(zhàn)——貪吃蛇游戲,附源碼

    C語言項目實戰(zhàn)——貪吃蛇游戲,附源碼

    目錄 ? ? ? ? ?一、在Visual Studio2010上創(chuàng)建C項目 二、對于新建項目的測試 三、貪吃蛇游戲 ? ? ? ?1.游戲準備 ? ? ? ? 2.游戲界面大小及背景顏色確定 ????????3. 畫出食物 ? ? ? ? ?4.畫蛇且使蛇移動 ? ? ? ? ?5.通過按鍵控制蛇的移動 ?????????6.蛇吃食物的問題 ?

    2024年01月20日
    瀏覽(16)
  • 【0基礎學算法】前綴和 (超詳細講解+私人筆記+源碼)

    【0基礎學算法】前綴和 (超詳細講解+私人筆記+源碼)

    目錄 什么是前綴和 我們?yōu)槭裁匆W習前綴和 前綴和實現(xiàn) 如何求s[i]? S[i]的作用? 模板 一維前綴和 二維前綴和 題目 第一題 第二題 哈嘍大家好,很長時間忘記更新咱們的學算法系列文章了,今天我們終于迎來了我們零基礎學算法的第四期內容,那就是前綴和,前綴和其實

    2024年02月05日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包