IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 用python快速写游戏 -> 正文阅读

[Python知识库]用python快速写游戏

最近写了一个python库叫fastgame,下载方式:

pip install fastgame -i https://pypi.org/project/

用了下Github Page,文档在https://stripepython.github.io/fastgame-document/

创建游戏:

from fastgame import FastGame
game = FastGame()

写贪吃蛇:

import random

import fastgame
from fastgame.utils.color import *  # 导入常用颜色

SNAKE_WIDTH = 20  # 定义贪吃蛇的宽
WIDTH = 850
HEIGHT = 700

game = fastgame.FastGame('Snake', size=(WIDTH, HEIGHT), fps=10)  # 创建游戏
canvas = fastgame.Canvas(size=(WIDTH, HEIGHT), bgcolor=WHITE)  # 创建贪吃蛇画布
pen = canvas.init_pen()  # 创建画笔
score_text = fastgame.Label('Score: 0', size=36, color=BLUE)

snake = [
    [WIDTH // 2, HEIGHT // 2 - SNAKE_WIDTH],
    [WIDTH // 2, HEIGHT // 2],
    [WIDTH // 2, HEIGHT // 2 + SNAKE_WIDTH],
    [WIDTH // 2, HEIGHT // 2 + SNAKE_WIDTH * 2]
]  # 定义蛇的身体
head = snake[0].copy()  # 蛇头
angel = 'left'  # 移动方向
score = 0  # 分数

def get_food():  # 定义获取食物的方法
    x = random.randint(SNAKE_WIDTH, WIDTH - SNAKE_WIDTH)
    y = random.randint(SNAKE_WIDTH, HEIGHT - SNAKE_WIDTH)
    x -= x % SNAKE_WIDTH  # 防止蛇吃不到食物
    y -= y % SNAKE_WIDTH
    return [x, y]

def eaten_food():  # 判断是否吃到食物
    x0, y0 = food
    x1, y1 = head
    return abs(x0 - x1) <= SNAKE_WIDTH and abs(y0 - y1) <= SNAKE_WIDTH

def move(move_angel: str = 'left'):  # 定义移动方法
    global angel, food, score
    angel = move_angel
    
    if eaten_food():  # 吃到食物
        score += 1
        food = get_food()
    else:
        snake.pop()  # 删除蛇的尾巴
    
    if move_angel == 'left':
        head[0] -= SNAKE_WIDTH
    elif move_angel == 'right':
        head[0] += SNAKE_WIDTH
    elif move_angel == 'up':
        head[1] -= SNAKE_WIDTH
    elif move_angel == 'down':
        head[1] += SNAKE_WIDTH
    snake.insert(0, head.copy())  # 插入蛇头
    
def dead():  # 判断是否死亡
    body = snake.copy()
    del body[0]
    return (
        (head in body)  # 撞到自己
        or head[0] <= 0  # 撞墙
        or head[0] >= WIDTH
        or head[1] <= 0
        or head[1] >= HEIGHT
    )


food = get_food()

@game.update
def update(over=False):  # 定义刷新函数
    pen.fill_screen(PINK)
    score_text.set_text(f'Score: {score}')
    score_text.update()
    
    pen.set_color(WHITE)  # 蛇身颜色
    for body in snake:  # 遍历绘制蛇身
        pen.rectangle(*body, (SNAKE_WIDTH, SNAKE_WIDTH))
        
    pen.set_color(BLACK)  # 蛇头颜色
    pen.rectangle(*head, (SNAKE_WIDTH, SNAKE_WIDTH))
    
    pen.set_color(GREEN)  # 食物颜色
    pen.rectangle(*food, (SNAKE_WIDTH, SNAKE_WIDTH))
    
    move(angel)
    
    if dead():  # Game Over
        if not over:
            update(True)   # 将Game Over那一帧渲染出来
        game_over()
        
def game_over():
    over_sprite = fastgame.screenshot()
    game_over_text = fastgame.Label('Game Over', size=96, color=WHITE)
    game_over_text.position = (0, HEIGHT // 2)
    
    @game.update  # 重定义渲染回调
    def reset_update():
        over_sprite.update()
        game_over_text.update()
    
@game.on_key_down
def on_key_down():
    global angel
    key = game.event.get('key')
    if key == fastgame.K_LEFT and angel != 'right':
        angel = 'left'
    elif key == fastgame.K_RIGHT and angel != 'left':
        angel = 'right'
    elif key == fastgame.K_UP and angel != 'down':
        angel = 'up'
    elif key == fastgame.K_DOWN and angel != 'up':
        angel = 'down'
        

if __name__ == '__main__':
    game.mainloop()

效果:

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-01 20:33:48  更:2022-02-01 20:34:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:24:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码