用DeepSeek实现贪吃蛇

今天写个短文,尝试一下前两天刚发布的国产开源大模型DeepSeek V3写代码。DeepSeek V3的推理能力是很强的,在我制作的数学智能体中,豆*、文*、千*等都做不对的题目,DeepSeek V3可以稳定地做对。所以今天就来试试写代码。

首先,我们使用普通的VS Code编程环境来安装一个支持DeepSeek的小插件CLINE。

运行VS Code后,在插件商店,找到CLINE,然后安装。

在CLINE中,“API Provider”(API提供商)选择“DeepSeek”,然后再点击下面的申请API Key申请的蓝色链接。

进入DeepSeek后选择“接入API”。如果没有deepseek的账号,需要先手机注册一个。在下图中你也可以看到,你可以选择直接跟DeepSeek进行对话,那是免费的。

虽然使用“API”的方式需要收费,但实际上跟免费几乎差不多。因为一开始,DeepSeek会直接送你价值10元人民币的500万tokens。你可能觉得10元好像也没多少,关键还在知道消耗量大不大。

那么我们就以下面的编写“贪吃蛇游戏”游戏的程序为例,看看会消耗掉多少。

要使用DeepSeek的API需要先创建一个API key,这样我们的CLINE插件就能调用了。我们在DeepSeek中点击“API keys”后,点击“创建 API key”按钮。

然后输入API key的名称,这个名称你自己定,是给你区分用的。填写完名称后点击“创建”。

接下来就是将生成的API key复制下来。

在CLINE中的“DeepSeek API Key”一栏中粘贴刚才获得的API Key,Model一项选择默认的“deepseek-chat”,再单击“Done”按钮。

接下来就是在对话框里提出要用python写一个贪吃蛇游戏的要求。下图是DeepSeek给出的一系列的操作建议,比如创建目录、安装支持库。如果你认为这些建议可行,只要接受,就会自动执行相应的操作,你甚至连复制粘贴都不需要做。

等到准备工作做完后,CLINE自动调用DeepSeek V3开始编写代码了。

等待10秒左右,一共162行代码全部完成。

最后,我们不做任何修改,直接运行,看看有没有问题。直接运行后的界面如下,按键盘上的“ASDW”键可以控制方向。居然一次性运行成功,连调试的工作都省了!

最后,我们来看看完成这样一个任务一共花了多少钱。

下图是消费的统计一共只花了0.01元多一点,0.02元都不到。也就是说,写完这个贪吃蛇游戏,从我提出一个问题,到DeepSeek完成代码输出一共才花了1分钱多一点。实在是太省钱了!如果我充值100块,估计都够我用10年的。

有了DeepSeek还要什么Cursor+GPT呢?Cursor的费用可是20美元一个月啊!

好了!关于这个辅助编码又快又省钱的DeepSeek就介绍到这里了!你还不赶紧去试试?

下面是源代码


import turtle
import time
import random
# 游戏窗口设置
window = turtle.Screen()
window.title("贪吃蛇游戏")
window.bgcolor("black")
window.setup(width=600, height=600)
window.tracer(0)
# 蛇头
head = turtle.Turtle()
head.speed(0)
head.shape("square")
head.color("white")
head.penup()
head.goto(0, 0)
head.direction = "stop"
# 食物
food = turtle.Turtle()
food.speed(0)
food.shape("circle")
food.color("red")
food.penup()
food.goto(0, 100)
segments = []
score = 0
high_score = 0
# 计分板
pen = turtle.Turtle()
pen.speed(0)
pen.shape("square")
pen.color("white")
pen.penup()
pen.hideturtle()
pen.goto(0, 260)
pen.write("得分: 0  最高分: 0", align="center", font=("Courier", 24, "normal"))
# 移动函数
def go_up():
    if head.direction != "down":
        head.direction = "up"
def go_down():
    if head.direction != "up":
        head.direction = "down"
def go_left():
    if head.direction != "right":
        head.direction = "left"
def go_right():
    if head.direction != "left":
        head.direction = "right"
def move():
    if head.direction == "up":
        y = head.ycor()
        head.sety(y + 20)
    if head.direction == "down":
        y = head.ycor()
        head.sety(y - 20)
    if head.direction == "left":
        x = head.xcor()
        head.setx(x - 20)
    if head.direction == "right":
        x = head.xcor()
        head.setx(x + 20)
# 键盘绑定
window.listen()
window.onkeypress(go_up, "w")
window.onkeypress(go_down, "s")
window.onkeypress(go_left, "a")
window.onkeypress(go_right, "d")
# 主游戏循环
while True:
    window.update()
    # 检查是否撞墙
    if head.xcor() > 290 or head.xcor() < -290 or head.ycor() > 290 or head.ycor() < -290:
        time.sleep(1)
        head.goto(0, 0)
        head.direction = "stop"
        # 隐藏身体
        for segment in segments:
            segment.goto(1000, 1000)
        
        # 清空身体列表
        segments.clear()
        # 重置分数
        score = 0
        pen.clear()
        pen.write("得分: {}  最高分: {}".format(score, high_score), align="center", font=("Courier", 24, "normal"))
    # 检查是否吃到食物
    if head.distance(food) < 20:
        # 移动食物到随机位置
        x = random.randint(-290, 290)
        y = random.randint(-290, 290)
        food.goto(x, y)
        # 添加新的身体
        new_segment = turtle.Turtle()
        new_segment.speed(0)
        new_segment.shape("square")
        new_segment.color("grey")
        new_segment.penup()
        segments.append(new_segment)
        # 增加分数
        score += 10
        if score > high_score:
            high_score = score
        
        pen.clear()
        pen.write("得分: {}  最高分: {}".format(score, high_score), align="center", font=("Courier", 24, "normal"))
    # 移动身体
    for index in range(len(segments)-1, 0, -1):
        x = segments[index-1].xcor()
        y = segments[index-1].ycor()
        segments[index].goto(x, y)
    if len(segments) > 0:
        x = head.xcor()
        y = head.ycor()
        segments[0].goto(x, y)
    move()
    # 检查是否撞到身体
    for segment in segments:
        if segment.distance(head) < 20:
            time.sleep(1)
            head.goto(0, 0)
            head.direction = "stop"
        
            # 隐藏身体
            for segment in segments:
                segment.goto(1000, 1000)
        
            # 清空身体列表
            segments.clear()
            # 重置分数
            score = 0
            pen.clear()
            pen.write("得分: {}  最高分: {}".format(score, high_score), align="center", font=("Courier", 24, "normal"))
    time.sleep(0.1)
个人说明个人说明个人说明
上一篇

DeepSeek做的成绩分析图表想加载本地数据?保存为图片?只要加上一句话!

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

最新评论

热线 热线
13888888888
QQ QQ
QQ在线咨询
微信 微信
微信
关注 关注
关注
返回顶部

微信扫一扫

微信扫一扫