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

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

相关推荐
2501_920931704 小时前
React Native鸿蒙跨平台采用ScrollView的horizontal属性实现横向滚动实现特色游戏轮播和分类导航
javascript·react native·react.js·游戏·ecmascript·harmonyos
身如柳絮随风扬4 小时前
Java中的CAS机制详解
java·开发语言
0思必得06 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
韩立学长6 小时前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
qq_192779876 小时前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
u0109272716 小时前
使用Plotly创建交互式图表
jvm·数据库·python
爱学习的阿磊6 小时前
Python GUI开发:Tkinter入门教程
jvm·数据库·python
froginwe116 小时前
Scala 循环
开发语言
m0_706653236 小时前
C++编译期数组操作
开发语言·c++·算法