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

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

相关推荐
用户8356290780512 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
用户8356290780512 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
你好潘先生10 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
Agent_大师11 小时前
WebSocket 行情重连成功,K线缺口不会自动消失
python
荣码11 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
copyer_xyf11 小时前
FastAPI 如何连接 MySQL
后端·python
apocelipes1 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户8356290780511 天前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent1 天前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m6251 天前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python