Python实现打包贪吃蛇游戏

复制代码
import random
import sys
import time
import msvcrt

WIDTH = 20
HEIGHT = 10
SPEED = 0.2
snake = [(WIDTH // 2, HEIGHT // 2)]
direction = (1, 0)
food = (random.randint(0, WIDTH - 1), random.randint(0, HEIGHT - 1))
score = 0


def draw_game():
    if sys.platform == "win32":
        print("\033[H\033[J", end="")
    else:
        print("\033c", end="")

    print("#" * (WIDTH + 2))

    for y in range(HEIGHT):
        print("#", end="")
        for x in range(WIDTH):
            if (x, y) in snake:
                print("●", end="")
            elif (x, y) == food:
                print("★", end="")
            else:
                print(" ", end="")
        print("#")

    print("#" * (WIDTH + 2))
    print(f"当前得分: {score} | 操作:W(上) S(下) A(左) D(右) | Q(退出)")


def move_snake():
    global snake, food, score

    head_x, head_y = snake[0]
    new_head = (head_x + direction[0], head_y + direction[1])

    if (new_head[0] < 0 or new_head[0] >= WIDTH or
            new_head[1] < 0 or new_head[1] >= HEIGHT or
            new_head in snake):
        print("\n=====================")
        print(f"游戏结束!最终得分: {score}")
        print("=====================")
        time.sleep(3)
        sys.exit()

    snake.insert(0, new_head)

    if new_head == food:
        score += 10
        while food in snake:
            food = (random.randint(0, WIDTH - 1), random.randint(0, HEIGHT - 1))
    else:
        snake.pop()


def get_user_input():
    global direction
    if msvcrt.kbhit():
        try:
            key = msvcrt.getch().decode('utf-8').lower()
        except:
            key = ""

        if key == 'w' and direction != (0, 1):
            direction = (0, -1)
        elif key == 's' and direction != (0, -1):
            direction = (0, 1)
        elif key == 'a' and direction != (1, 0):
            direction = (-1, 0)
        elif key == 'd' and direction != (-1, 0):
            direction = (1, 0)
        elif key == 'q':
            print("\n你选择退出游戏!")
            time.sleep(1)
            sys.exit()


if __name__ == "__main__":
    print("=====================")
    print("  Windows贪吃蛇游戏  ")
    print("=====================")
    print("控制说明:")
    print("W - 向上 | S - 向下")
    print("A - 向左 | D - 向右")
    print("Q - 退出游戏")
    print("\n3秒后游戏开始...")
    time.sleep(3)

    while True:
        get_user_input()
        move_snake()
        draw_game()
        time.sleep(SPEED)

这是一段在控制台实现贪吃蛇的代码,现在我们将这段代码打包成可执行文件。

先按"WIn"+'"R"打开命令,然后输入"cmd"打开命令行。

然后先安装pyinstaller库

bash 复制代码
pip install pyinstaller

然后切换到你Python文件的目录,我的是D盘

再切换到游戏文件夹(替换成你的真实路径)

打包你的游戏(关键:文件名必须和实际一致!)

bash 复制代码
pyinstaller -F 你的真实文件名.py

然后就打包完成了,打开项目文件

游戏就在dist文件夹里

然后就可以启动游戏了

日记

1月30日,星期五

重温《哈利·波特1哈利·波特与魔法石》

昨天晚自习结束,没什么事干,重温了一下《哈利·波特1哈利·波特与魔法石》,我发现还是有很多有意思的地方的。

首先是金妮真漂亮,我真觉得论漂亮赫敏还是差一档的。(我是澳门新普京看到,别喷我)

我说白了,金妮就是比赫敏好看,我记得原著也是,赫敏没有那么漂亮,金妮特别漂亮。

我发现麦格教授还是有点幽默的,第一天哈利和罗恩迟到了,麦格教授吐槽应该把他们变成怀表,他们说:我们迷路了,麦格教授立马吐槽是不是应该把他们变成地图,不过马上好心的麦格教授就给个台阶下:我相信找到你们自己的座位不需要地图吧。真的喜欢麦格教授,既批评了,又照顾面子给哈利他们一个台阶下。

这一段是三只小不小心去惹到了看守魔法石的三头犬,然后赫敏吐槽让两哥们安分点,别害我们送命,或者更糟,被开除。当时赫敏说完有一个离开的镜头,我当时就在吐槽,shi了不应该比被开除更糟吗,然后罗恩就帮我吐槽了,她那个更糟分不清吗?果然,罗恩和我一样是比较正常的人。

OK了,这个电影是昨天看到,毕竟有时候写完日记可能有好玩值得记录的事情发生,那就要等到第二天才能记录下来了。

今天结束了,我要去快乐快乐了。

相关推荐
带娃的IT创业者27 分钟前
Python 异步编程完全指南:从入门到精通
服务器·开发语言·python·最佳实践·asyncio·异步编程
一只鹿鹿鹿3 小时前
信息安全等级保护安全建设防护解决方案(总体资料)
运维·开发语言·数据库·面试·职场和发展
喵叔哟3 小时前
9. 【Blazor全栈开发实战指南】--Blazor调用JavaScript
开发语言·javascript·udp
wuqingshun3141593 小时前
如何停止一个正在退出的线程
java·开发语言·jvm
我命由我123453 小时前
Element Plus - Form 的 resetField 方法观察记录
开发语言·前端·javascript·vue.js·html·html5·js
朱包林3 小时前
Python基础
linux·开发语言·ide·python·visualstudio·github·visual studio
Eward-an3 小时前
【算法竞赛/大厂面试】盛最多水容器的最大面积解析
python·算法·leetcode·面试·职场和发展
no_work4 小时前
基于python预测含MLP决策树LGBM随机森林XGBoost等
python·决策树·随机森林·cnn
进击的雷神4 小时前
地址语义解析、多语言国家匹配、动态重试机制、混合内容提取——德国FAKUMA展爬虫四大技术难关攻克纪实
爬虫·python
FreakStudio4 小时前
一行命令搞定驱动安装!MicroPython 开发有了自己的 “PyPI”包管理平台!
python·stm32·单片机·嵌入式·arm·电子diy