最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python制作當(dāng)年第一款手機(jī)游戲-貪吃蛇游戲(練習(xí))

 更新時(shí)間:2022年01月25日 15:35:15   作者:松鼠愛吃餅干?  
這篇文章主要介紹了Python制作當(dāng)年第一款手機(jī)游戲-貪吃蛇游戲,文章利用Python?pygame做一個(gè)貪吃蛇的小游戲而且講清楚每一段代碼是用來干嘛的,需要的朋友可以參考一下

前言:

文章利用Python pygame做一個(gè)貪吃蛇的小游戲而且講清楚每一段代碼是用來干嘛的。

據(jù)說是貪吃蛇游戲是1976年,Gremlin公司推出的經(jīng)典街機(jī)游戲,那我們今天用Python制作的這個(gè)貪吃蛇小游戲是一個(gè)像素版的,雖然簡(jiǎn)陋,但還是可以玩起來的

我們主要要做的內(nèi)容:

  • 創(chuàng)建游戲窗口
  • 繪制貪吃蛇與食物
  • 蛇吃食物

貪吃蛇的棋盤模型:

現(xiàn)在就開始我們的代碼,首先,還是導(dǎo)入模塊:

import pygame
import random
import copy

1. 創(chuàng)建游戲窗口

1.1 游戲初始化

pygame.init()
clock = pygame.time.Clock() ?# 設(shè)置游戲時(shí)鐘
pygame.display.set_caption("貪吃蛇-解答、源碼、相關(guān)資料可私信我") ?# 初始化標(biāo)題
screen = pygame.display.set_mode((500, 500)) ?# 初始化窗口 窗體的大小為 500 ?500

1.2 初始化蛇的位置 蛇的長(zhǎng)度 10 10 也就是蛇的 X Y 坐標(biāo)

snake_list = [[10, 10]]

首先設(shè)置蛇的一個(gè)運(yùn)行方向 接下來判斷鍵盤事件在決定蛇的運(yùn)行方向
蛇可以運(yùn)行起來了,那么接下來就是,吃食物增加自己的長(zhǎng)度和不吃食物在不同的位置顯示

初始小蛇方向:

move_up = False
move_down = False
move_left = False
move_right = True

1.3 初始化食物的位置

x = random.randint(10, 490)
y = random.randint(10, 490)
food_point = [x, y]

1.4 開啟游戲循環(huán)

running = True
while running:
? ? # 游戲時(shí)鐘 刷新頻率
? ? clock.tick(20)

1.5 填充背景為白色

screen.fill([255, 255, 255])

1.6 繪制背景

for x in range(0, 501, 10):
? ? pygame.draw.line(screen, (195, 197, 199), (x, 0), (x, 500), 1)
? ? pygame.draw.line(screen, (195, 197, 199), (0, x), (500, x), 1)
? ? food_rect = pygame.draw.circle(screen, [255, 0, 0], food_point, 15, 0)

1.7繪制蛇

snake_rect = []
for pos in snake_list:
? ? # 1.7.1 繪制蛇的身子
? ? snake_rect.append(pygame.draw.circle(screen, [255, 0, 0], pos, 5, 0))

2. 繪制貪吃蛇與食物

2.1 獲取蛇的長(zhǎng)度,移動(dòng)蛇的身子

pos = len(snake_list) - 1
while pos > 0:
? ? snake_list[pos] = copy.deepcopy(snake_list[pos - 1])
? ? pos -= 1

2.2 更改蛇頭位置

if move_up:
? ? snake_list[pos][1] -= 10
? ? if snake_list[pos][1] < 0:
? ? ? ? snake_list[pos][1] = 500

if move_down:
? ? snake_list[pos][1] += 10
? ? if snake_list[pos][1] > 500:
? ? ? ? snake_list[pos][1] = 0

if move_left:
? ? snake_list[pos][0] -= 10
? ? if snake_list[pos][0] < 0:
? ? ? ? snake_list[pos][0] = 500

if move_right:
? ? snake_list[pos][0] += 10
? ? if snake_list[pos][0] > 500:
? ? ? ? snake_list[pos][0] = 0

2.3 鍵盤控制移動(dòng)職位

for event in pygame.event.get():
? ? # print(event)
? ? # 判斷按下的按鍵
? ? if event.type == pygame.KEYDOWN:
? ? ? ? # 上鍵
? ? ? ? if event.key == pygame.K_UP:
? ? ? ? ? ? move_up = True
? ? ? ? ? ? move_down = False
? ? ? ? ? ? move_left = False
? ? ? ? ? ? move_right = False
? ? ? ? # 下鍵
? ? ? ? if event.key == pygame.K_DOWN:
? ? ? ? ? ? move_up = False
? ? ? ? ? ? move_down = True
? ? ? ? ? ? move_left = False
? ? ? ? ? ? move_right = False
? ? ? ? # 左鍵
? ? ? ? if event.key == pygame.K_LEFT:
? ? ? ? ? ? move_up = False
? ? ? ? ? ? move_down = False
? ? ? ? ? ? move_left = True
? ? ? ? ? ? move_right = False
? ? ? ? # 右鍵
? ? ? ? if event.key == pygame.K_RIGHT:
? ? ? ? ? ? move_up = False
? ? ? ? ? ? move_down = False
? ? ? ? ? ? move_left = False
? ? ? ? ? ? move_right = True

2.4 獲取蛇的長(zhǎng)度,移動(dòng)蛇的身子

pos = len(snake_list) - 1
while pos > 0:
? ? snake_list[pos] = copy.deepcopy(snake_list[pos - 1])
? ? pos -= 1

3. 蛇吃食物

3.1 碰撞檢測(cè) 如果蛇吃掉食物

if food_rect.collidepoint(pos):
? ? # 貪吃蛇吃掉食物
? ? snake_list.append(food_point)
? ? # 重置食物位置
? ? food_point = [random.randint(10, 490), random.randint(10, 490)]
? ? food_rect = pygame.draw.circle(screen, [255, 0, 0], food_point, 15, 0)
? ? break

3.2 如果蛇吃掉了自己

head_rect = snake_rect[0]
count = len(snake_rect)
while count > 1:
? ? if head_rect.colliderect(snake_rect[count - 1]):
? ? ? ? running = False
? ? count -= 1

pygame.display.update()

到此這篇關(guān)于Python制作當(dāng)年第一款手機(jī)游戲-貪吃蛇游戲(練習(xí))的文章就介紹到這了,更多相關(guān)Python制 手機(jī)游戲-貪吃蛇游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python3.4實(shí)現(xiàn)郵件發(fā)送功能

    python3.4實(shí)現(xiàn)郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了python3.4實(shí)現(xiàn)郵件發(fā)送功能,含帶中文附件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 基于Python實(shí)現(xiàn)文件處理程序

    基于Python實(shí)現(xiàn)文件處理程序

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文件處理程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • python爬蟲 基于requests模塊的get請(qǐng)求實(shí)現(xiàn)詳解

    python爬蟲 基于requests模塊的get請(qǐng)求實(shí)現(xiàn)詳解

    這篇文章主要介紹了python爬蟲 基于requests模塊的get請(qǐng)求實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • TensorFlow深度學(xué)習(xí)之實(shí)現(xiàn)合并與分割的示例代碼

    TensorFlow深度學(xué)習(xí)之實(shí)現(xiàn)合并與分割的示例代碼

    這篇文章主要為大家詳細(xì)介紹了TensorFlow中實(shí)現(xiàn)合并與分割的四位函數(shù)以及它們的用法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-07-07
  • 如何使用Python在2秒內(nèi)評(píng)估國(guó)際象棋位置詳解

    如何使用Python在2秒內(nèi)評(píng)估國(guó)際象棋位置詳解

    關(guān)心編程語言的使用趨勢(shì)的人都知道,最近幾年,國(guó)內(nèi)最火的兩種語言非Python與Go莫屬,下面這篇文章主要給大家介紹了關(guān)于如何使用Python在2秒內(nèi)評(píng)估國(guó)際象棋位置的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Python中json文件的讀取實(shí)現(xiàn)

    Python中json文件的讀取實(shí)現(xiàn)

    在許多編程語言中,都有內(nèi)置的JSON解析器和生成器,可以方便地處理JSON數(shù)據(jù),本文主要介紹了Python中json文件的讀取實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • Django ModelForm組件使用方法詳解

    Django ModelForm組件使用方法詳解

    這篇文章主要介紹了Django ModelForm組件使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python+kivy BoxLayout布局示例代碼詳解

    Python+kivy BoxLayout布局示例代碼詳解

    這篇文章主要介紹了Python+kivy BoxLayout布局的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 深入理解Python中的元類(metaclass)

    深入理解Python中的元類(metaclass)

    這篇文章主要介紹了深入理解Python中的元類(metaclass),本文是一篇相當(dāng)精彩的外文翻譯,講解了類也是對(duì)象、動(dòng)態(tài)地創(chuàng)建類、到底什么是元類,需要的朋友可以參考下
    2015-02-02
  • Python如何利用正則表達(dá)式爬取網(wǎng)頁信息及圖片

    Python如何利用正則表達(dá)式爬取網(wǎng)頁信息及圖片

    這篇文章主要給大家介紹了關(guān)于Python如何利用正則表達(dá)式爬取網(wǎng)頁信息及圖片的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論

武安市| 花莲市| 绍兴市| 乌拉特后旗| 个旧市| 中宁县| 额尔古纳市| 南漳县| 那坡县| 彝良县| 综艺| 霞浦县| 顺昌县| 信阳市| 雷山县| 万州区| 星子县| 磴口县| 合阳县| 翁牛特旗| 双鸭山市| 板桥市| 黄石市| 博客| 芦溪县| 陇西县| 白玉县| 尚义县| 青岛市| 济源市| 松潘县| 乌海市| 惠东县| 西城区| 阿拉善右旗| 大荔县| 通渭县| 深圳市| 东丽区| 苏尼特右旗| 郸城县|