一行Python代碼玩遍童年的小游戲


寫在前面

貪吃蛇,吃豆人,迷宮,井字游戲......這些小游戲我相信大家小的時候肯定玩過,或許在某個時段還沉迷過.
隨着年齡的增長,這些小游戲離我們越來越遠,但是我相信大家的童心還是一直在的
今天就分享一個真正可以玩耍的GitHub項目 --- free-python-games

 

安裝與使用

python大家都懂的,安裝第三方庫非常簡單

pip install freegames
"""
當然在學習Python的道路上肯定會困難,沒有好的學習資料,怎么去學習呢? 
學習Python中有不明白推薦加入交流Q群號:928946953 
群里有志同道合的小伙伴,互幫互助, 群里有不錯的視頻學習教程和PDF!
還有大牛解答!
"""

 

Python

 

由於該項目中的所有游戲均是基於Python內置模塊Turtle制作,所以沒有太多依賴,安裝不會有困難

安裝完之后我們可以使用 python -m freegames list 來查看所有的游戲列表

一行Python代碼玩遍童年的小游戲

 

圖1

貪吃蛇

現在我們可以使用一行代碼啟動相關游戲,比如貪吃蛇snake

python -m freegames.snake

Python

復制

一行Python代碼玩遍童年的小游戲

 

圖2

貪吃蛇的玩法想必不用過多解釋了,使用鍵盤⬆️⬇️⬅️➡️即可操控

吃豆人

吃豆人沒玩過也應該聽過,使用下面的代碼可以啟動一個類似吃豆人的游戲

python -m freegames.pacman

Python

復制

一行Python代碼玩遍童年的小游戲

 

圖3

Flappy

Flappy這個游戲和之前非常火的Flappy bird十分類似

一行Python代碼玩遍童年的小游戲

 

圖4

只需要更換游戲名即可啟動

python -m freegames.flappy

Python

復制

一行Python代碼玩遍童年的小游戲

 

圖5

這次需要不斷點擊鼠標來控制綠色小圓點飛行,實測比flappy bird難度要更高一點

Memory

Memory翻譯過來是記憶,該游戲給出一些宮格,點擊每一個小宮格會顯示背后藏的數字,但會快速消失,當你成功選中兩個相同的數字之后就會顯示為拼圖,可玩性還是很高的

python -m freegames.memory

Python

復制

一行Python代碼玩遍童年的小游戲

 

圖8

迷宮

這個游戲應該就不用介紹了,找出走出迷宮對應的路徑即可

python -m freegames.maze

Python

復制

一行Python代碼玩遍童年的小游戲

 

圖7

Tic Tac Toe

這個游戲我打賭你一定玩過,單擊屏幕即可放置一個X或O,當三個同樣的圖案在一條直線上就贏了

python3 -m freegames.tictactoe

Python

復制

一行Python代碼玩遍童年的小游戲

 

圖8

查看源碼

還有更多的游戲這里就不再一一介紹,Turtle我們並不陌生,所以當我們玩游戲時應該思考開發者是怎樣實現的。使用下面的代碼即可在當前目錄下生成對應游戲的源碼

"免費的python游戲將游戲和學習結合在一個靈活的環境中 減少編程等困難主題的壓力"

python3 -m freegames copy snake

Python

復制

執行之后,在當前目錄下就多了一個snake.py文件,打開就能查看游戲對應的邏輯

"""Snake, classic arcade game.

Exercises

1. How do you make the snake faster or slower?
2. How can you make the snake go around the edges?
3. How would you move the food?
4. Change the snake to respond to arrow keys.

"""

from turtle import *
from random import randrange
from freegames import square, vector

food = vector(0, 0)
snake = [vector(10, 0)]
aim = vector(0, -10)

def change(x, y):
    "Change snake direction."
    aim.x = x
    aim.y = y

def inside(head):
    "Return True if head inside boundaries."
    return -200 < head.x < 190 and -200 < head.y < 190

def move():
    "Move snake forward one segment."
    head = snake[-1].copy()
    head.move(aim)

    if not inside(head) or head in snake:
        square(head.x, head.y, 9, 'red')
        update()
        return

    snake.append(head)

    if head == food:
        print('Snake:', len(snake))
        food.x = randrange(-15, 15) * 10
        food.y = randrange(-15, 15) * 10
    else:
        snake.pop(0)

    clear()

    for body in snake:
        square(body.x, body.y, 9, 'black')

    square(food.x, food.y, 9, 'green')
    update()
    ontimer(move, 100)

setup(420, 420, 370, 0)
hideturtle()
tracer(False)
listen()
onkey(lambda: change(10, 0), 'Right')
onkey(lambda: change(-10, 0), 'Left')
onkey(lambda: change(0, 10), 'Up')
onkey(lambda: change(0, -10), 'Down')
move()
done()

 

Python

復制

現在我們就可以學習源碼並進行修改來實現更多的功能與玩法,抓緊試試吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM