Deepseek最强大的就是它的深度思考,并且展现了它的思考过程。
五种可使用Deep seek的方式(应该不限于这五种,后续嵌入deepseek的应该更多,多了解一点因为官网容易崩~~):
1.deep seek官网
2.硅基流动siliconflow
3.秘塔(深度思考)
4.sider
5.chatbox
今天学了deepseek做几个小游戏,很有意思。官网和硅基流动都无法直接运行代码,sider和秘塔有"运行"按钮。对deepseek进行简单的提问"做一个消消乐小游戏"或"做一个贪吃蛇小游戏",deepseek会展示深度思考的过程,然后给出代码。为了使得游戏设计更有意思(好上手玩),比如贪吃蛇游戏,要求"进一步改进代码,呈现UI界面,包含"开始"按钮"、"结束"按钮、"上下左右"按钮、以及能够统计分数"。
silicon flow中嵌入deepseek写消消乐小游戏(要求生成UI界面)
python
import pygame
import random
# 游戏常量配置
WIDTH, HEIGHT = 400, 450
BLOCK_SIZE = 40
GAP = 2
ROWS = 8
COLS = 8
COLORS = [(255, 0, 0), # 红
(0, 255, 0), # 绿
(0, 0, 255), # 蓝
(255, 255, 0), # 黄
(255, 165, 0)] # 橙
def create_board():
"""创建初始游戏面板"""
return [[random.randint(0, len(COLORS)-1) for _ in range(COLS)] for _ in range(ROWS)]
def find_matches(board):
"""查找所有可消除的方块"""
matches = set()
# 横向检查
for row in range(ROWS):
for col in range(COLS - 2):
if board[row][col] == board[row][col+1] == board[row][col+2]:
matches.update([(row, col), (row, col+1), (row, col+2)])
# 纵向检查
for col in range(COLS):
for row in range(ROWS - 2):
if board[row][col] == board[row+1][col] == board[row+2][col]:
matches.update([(row, col), (row+1, col), (row+2, col)])
return matches
def drop_blocks(board):
"""处理方块下落和新方块生成"""
for col in range(COLS):
# 收集该列有效方块
column = [board[row][col] for row in range(ROWS) if board[row][col] != -1]
# 生成新列(补充新方块)
new_column = [-1]*(ROWS - len(column)) + column
# 更新游戏面板
for row in range(ROWS):
board[row][col] = new_column[row] if new_column[row] != -1 else random.randint(0, len(COLORS)-1)
def draw_board(screen, board, score):
"""绘制游戏界面"""
screen.fill((30, 30, 30))
# 绘制得分
font = pygame.font.SysFont(None, 36)
text = font.render(f'Score: {score}', True, (255, 255, 255))
screen.blit(text, (10, HEIGHT-40))
# 绘制方块
for row in range(ROWS):
for col in range(COLS):
color_idx = board[row][col]
if color_idx == -1:
continue
x = col * (BLOCK_SIZE + GAP)
y = row * (BLOCK_SIZE + GAP)
pygame.draw.rect(screen, COLORS[color_idx], (x, y, BLOCK_SIZE, BLOCK_SIZE))
def main():
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("消消乐")
clock = pygame.time.Clock()
board = create_board()
selected = None
score = 0
running = True
while running:
draw_board(screen, board, score)
pygame.display.flip()
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
x, y = pygame.mouse.get_pos()
col = x // (BLOCK_SIZE + GAP)
row = y // (BLOCK_SIZE + GAP)
if 0 <= row < ROWS and 0 <= col < COLS:
if selected is None:
selected = (row, col)
else:
# 判断是否相邻
row1, col1 = selected
if (abs(row - row1) == 1 and col == col1) or (abs(col - col1) == 1 and row == row1):
# 交换方块
board[row][col], board[row1][col1] = board[row1][col1], board[row][col]
# 检查消除
matches = find_matches(board)
if not matches:
# 无效交换,换回来
board[row][col], board[row1][col1] = board[row1][col1], board[row][col]
else:
# 处理连续消除
while matches:
# 移除匹配方块
for (r, c) in matches:
board[r][c] = -1
score += len(matches)
# 方块下落和新方块生成
drop_blocks(board)
# 检查新的消除
matches = find_matches(board)
selected = None
else:
selected = None # 取消选择
pygame.quit()
if __name__ == "__main__":
main()

deepseek官网写消消乐小游戏
python
import os
import random
from collections import deque
class PuzzleGame:
def __init__(self, size=8):
self.size = size
self.board = []
self.score = 0
self.colors = ['★', '◆', '●', '▲', '♠', '♦'] # 不同符号表示颜色
self.directions = [(0, 1), (1, 0), (0, -1), (-1, 0)] # 移动方向
def create_board(self):
"""初始化游戏棋盘"""
self.board = [[random.choice(self.colors) for _ in range(self.size)]
for _ in range(self.size)]
# 确保初始棋盘没有现成匹配
while self.find_matches():
self.board = [[random.choice(self.colors) for _ in range(self.size)]
for _ in range(self.size)]
def print_board(self):
"""打印游戏界面"""
os.system('cls' if os.name == 'nt' else 'clear')
print(f"当前分数: {self.score}\n")
print(" " + " ".join(str(i) for i in range(self.size)))
for i, row in enumerate(self.board):
print(f"{i} |" + " ".join(row) + "|")
def get_swap(self):
"""获取用户输入的交换位置"""
while True:
try:
coords = input("\n输入交换坐标 (格式:x1 y1 x2 y2): ").split()
if len(coords) != 4:
raise ValueError
x1, y1, x2, y2 = map(int, coords)
if self.is_valid_swap(x1, y1, x2, y2):
return (x1, y1), (x2, y2)
print("无效交换!必须相邻且坐标有效")
except (ValueError, IndexError):
print("输入格式错误,示例:2 3 2 4")
def is_valid_swap(self, x1, y1, x2, y2):
"""验证是否为相邻交换"""
if not (0 <= x1 < self.size and 0 <= y1 < self.size):
return False
if not (0 <= x2 < self.size and 0 <= y2 < self.size):
return False
return abs(x1 - x2) + abs(y1 - y2) == 1 # 曼哈顿距离为1
def swap_tiles(self, pos1, pos2):
"""交换两个格子"""
(x1, y1), (x2, y2) = pos1, pos2
self.board[x1][y1], self.board[x2][y2] = self.board[x2][y2], self.board[x1][y1]
# 如果没有产生消除,则交换回来
if not self.find_matches():
self.board[x1][y1], self.board[x2][y2] = self.board[x2][y2], self.board[x1][y1]
return False
return True
def find_matches(self):
"""查找所有可消除项"""
matches = []
# 横向检测
for i in range(self.size):
j = 0
while j < self.size - 2:
if self.board[i][j] == self.board[i][j+1] == self.board[i][j+2] != ' ':
start = j
while j < self.size and self.board[i][start] == self.board[i][j]:
j += 1
if j - start >= 3:
matches.extend([(i, col) for col in range(start, j)])
else:
j += 1
# 纵向检测
for j in range(self.size):
i = 0
while i < self.size - 2:
if self.board[i][j] == self.board[i+1][j] == self.board[i+2][j] != ' ':
start = i
while i < self.size and self.board[start][j] == self.board[i][j]:
i += 1
if i - start >= 3:
matches.extend([(row, j) for row in range(start, i)])
else:
i += 1
return list(set(matches)) # 去重
def remove_matches(self, matches):
"""消除匹配项并计分"""
for x, y in matches:
self.board[x][y] = ' '
self.score += len(matches) * 10 # 每个消除项10分
def drop_tiles(self):
"""下落填充空位"""
for j in range(self.size):
column = [self.board[i][j] for i in range(self.size) if self.board[i][j] != ' ']
column = [' '] * (self.size - len(column)) + column
for i in range(self.size):
self.board[i][j] = column[i]
def refill_board(self):
"""补充新的元素"""
for i in range(self.size):
for j in range(self.size):
if self.board[i][j] == ' ':
self.board[i][j] = random.choice(self.colors)
def has_possible_moves(self):
"""检测是否还有可能的移动"""
for i in range(self.size):
for j in range(self.size):
for dx, dy in self.directions:
ni, nj = i + dx, j + dy
if 0 <= ni < self.size and 0 <= nj < self.size:
# 尝试交换
self.board[i][j], self.board[ni][nj] = self.board[ni][nj], self.board[i][j]
if self.find_matches():
self.board[i][j], self.board[ni][nj] = self.board[ni][nj], self.board[i][j]
return True
self.board[i][j], self.board[ni][nj] = self.board[ni][nj], self.board[i][j]
return False
def play(self):
"""主游戏循环"""
self.create_board()
while True:
self.print_board()
if not self.has_possible_moves():
print("\n游戏结束!无更多可移动步骤")
break
pos1, pos2 = self.get_swap()
if self.swap_tiles(pos1, pos2):
while True:
matches = self.find_matches()
if not matches:
break
self.remove_matches(matches)
self.drop_tiles()
self.refill_board()
self.print_board()
if __name__ == "__main__":
game = PuzzleGame()
game.play()

|
silicon flow中嵌入deepseek写贪吃蛇小游戏(要求生成UI界面)
python
import tkinter as tk
from tkinter import messagebox
import random
class SnakeGameUI:
def __init__(self, master):
self.master = master
self.master.title("贪吃蛇游戏")
# 游戏配置
self.cell_size = 20
self.width = 30 # 格子数量
self.height = 30
self.speed = 500 # 游戏速度(ms)
# 游戏状态
self.snake = [(self.width//2, self.height//2)]
self.direction = (0, 1)
self.food = self.generate_food()
self.score = 0
self.game_over = False
# 创建界面
self.create_widgets()
self.bind_keys()
self.start_game()
def create_widgets(self):
"""创建界面组件"""
# 游戏画布
self.canvas = tk.Canvas(
self.master,
width=self.width*self.cell_size,
height=self.height*self.cell_size,
bg='black'
)
self.canvas.grid(row=0, column=0, columnspan=3)
# 控制面板
self.btn_up = tk.Button(self.master, text="↑", command=lambda: self.change_direction((0, -1)))
self.btn_left = tk.Button(self.master, text="←", command=lambda: self.change_direction((-1, 0)))
self.btn_right = tk.Button(self.master, text="→", command=lambda: self.change_direction((1, 0)))
self.btn_down = tk.Button(self.master, text="↓", command=lambda: self.change_direction((0, 1)))
self.btn_up.grid(row=1, column=1, sticky="ew")
self.btn_left.grid(row=2, column=0, sticky="ew")
self.btn_right.grid(row=2, column=2, sticky="ew")
self.btn_down.grid(row=2, column=1, sticky="ew")
# 分数标签
self.lbl_score = tk.Label(self.master, text=f"得分: {self.score}", font=('Arial', 14))
self.lbl_score.grid(row=3, column=0, columnspan=3)
def bind_keys(self):
"""绑定键盘事件"""
self.master.bind('<Up>', lambda e: self.change_direction((-1, 0)))
self.master.bind('<Down>', lambda e: self.change_direction((1, 0)))
self.master.bind('<Left>', lambda e: self.change_direction((0, -1)))
self.master.bind('<Right>', lambda e: self.change_direction((0, 1)))
def generate_food(self):
"""生成食物位置"""
while True:
x = random.randint(0, self.width-1)
y = random.randint(0, self.height-1)
if (x, y) not in self.snake:
return (x, y)
def change_direction(self, new_dir):
"""改变移动方向"""
# 禁止直接反向移动
if (new_dir[0] != -self.direction[0] or
new_dir[1] != -self.direction[1]):
self.direction = new_dir
def draw(self):
"""绘制游戏元素"""
self.canvas.delete("all")
# 绘制蛇
for i, (x, y) in enumerate(self.snake):
color = 'lime' if i == 0 else 'green'
self.canvas.create_rectangle(
x*self.cell_size, y*self.cell_size,
(x+1)*self.cell_size, (y+1)*self.cell_size,
fill=color, outline='black'
)
# 绘制食物
fx, fy = self.food
self.canvas.create_oval(
fx*self.cell_size, fy*self.cell_size,
(fx+1)*self.cell_size, (fy+1)*self.cell_size,
fill='red', outline='darkred'
)
# 更新分数
self.lbl_score.config(text=f"得分: {self.score}")
def move(self):
"""处理移动逻辑"""
if self.game_over:
return
# 计算新头部位置
head_x, head_y = self.snake[0]
dx, dy = self.direction
new_head = (head_x + dx, head_y + dy)
# 碰撞检测
if (new_head in self.snake or
new_head[0] < 0 or new_head[0] >= self.width or
new_head[1] < 0 or new_head[1] >= self.height):
self.game_over = True
messagebox.showinfo("游戏结束", f"游戏结束!得分: {self.score}")
self.master.destroy()
return
self.snake.insert(0, new_head)
# 吃食物检测
if new_head == self.food:
self.score += 10
self.food = self.generate_food()
else:
self.snake.pop()
self.draw()
self.master.after(self.speed, self.move)
def start_game(self):
"""开始游戏循环"""
self.draw()
self.master.after(self.speed, self.move)
if __name__ == "__main__":
root = tk.Tk()
game = SnakeGameUI(root)
root.mainloop()

用deep seek官网写贪吃蛇小游戏(要求生成UI界面)
python
import tkinter as tk
from tkinter import messagebox
import random
import json
import os
class SnakeGame:
def __init__(self, master):
self.master = master
self.master.title("贪吃蛇游戏")
# 游戏配置
self.cell_size = 25
self.width = 20
self.height = 20
self.speed = 500
self.score = 0
self.high_score = 0
# 游戏状态
self.snake = []
self.direction = (0, 1)
self.food = None
self.game_active = False
# 初始化界面
self.create_widgets()
self.load_high_score()
self.reset_game()
def create_widgets(self):
"""创建游戏界面"""
# 控制面板
control_frame = tk.Frame(self.master)
control_frame.pack(pady=10)
# 游戏控制按钮
self.btn_start = tk.Button(
control_frame, text="开始游戏",
command=self.start_game, width=10
)
self.btn_stop = tk.Button(
control_frame, text="结束游戏",
command=self.stop_game, state=tk.DISABLED, width=10
)
self.btn_start.pack(side=tk.LEFT, padx=5)
self.btn_stop.pack(side=tk.LEFT, padx=5)
# 方向控制按钮
dir_frame = tk.Frame(self.master)
dir_frame.pack(pady=5)
self.btn_up = tk.Button(dir_frame, text="↑", command=lambda: self.change_direction((-1, 0)))
self.btn_left = tk.Button(dir_frame, text="←", command=lambda: self.change_direction((0, -1)))
self.btn_right = tk.Button(dir_frame, text="→", command=lambda: self.change_direction((0, 1)))
self.btn_down = tk.Button(dir_frame, text="↓", command=lambda: self.change_direction((1, 0)))
self.btn_up.grid(row=0, column=1, padx=3)
self.btn_left.grid(row=1, column=0, padx=3)
self.btn_right.grid(row=1, column=2, padx=3)
self.btn_down.grid(row=1, column=1, padx=3)
# 游戏画布
self.canvas = tk.Canvas(
self.master,
width=self.width*self.cell_size,
height=self.height*self.cell_size,
bg="#2E2E2E"
)
self.canvas.pack(pady=10)
# 分数显示
score_frame = tk.Frame(self.master)
score_frame.pack()
self.lbl_score = tk.Label(
score_frame,
text=f"当前得分: {self.score} 最高得分: {self.high_score}",
font=("微软雅黑", 12)
)
self.lbl_score.pack()
def load_high_score(self):
"""加载历史最高分"""
if os.path.exists("snake_highscore.json"):
try:
with open("snake_highscore.json", "r") as f:
data = json.load(f)
self.high_score = data.get("high_score", 0)
except:
pass
def save_high_score(self):
"""保存最高分"""
with open("snake_highscore.json", "w") as f:
json.dump({"high_score": self.high_score}, f)
def reset_game(self):
"""重置游戏状态"""
self.snake = [(self.width//2, self.height//2)]
self.direction = (0, 1)
self.food = self.generate_food()
self.score = 0
self.update_score()
def generate_food(self):
"""生成食物"""
while True:
x = random.randint(0, self.width-1)
y = random.randint(0, self.height-1)
if (x, y) not in self.snake:
return (x, y)
def change_direction(self, new_dir):
"""改变方向"""
if self.game_active and (new_dir[0] != -self.direction[0] or new_dir[1] != -self.direction[1]):
self.direction = new_dir
def draw(self):
"""绘制游戏元素"""
self.canvas.delete("all")
# 绘制蛇
for i, (x, y) in enumerate(self.snake):
color = "#4CAF50" if i == 0 else "#8BC34A"
self.canvas.create_rectangle(
x*self.cell_size, y*self.cell_size,
(x+1)*self.cell_size, (y+1)*self.cell_size,
fill=color, outline="#2E7D32"
)
# 绘制食物
fx, fy = self.food
self.canvas.create_oval(
fx*self.cell_size+2, fy*self.cell_size+2,
(fx+1)*self.cell_size-2, (fy+1)*self.cell_size-2,
fill="#FF5252", outline="#D32F2F"
)
def update_score(self):
"""更新分数显示"""
self.lbl_score.config(
text=f"当前得分: {self.score} 最高得分: {self.high_score}"
)
def move(self):
"""移动蛇"""
if not self.game_active:
return
# 计算新头部位置
head_x, head_y = self.snake[0]
dx, dy = self.direction
new_head = (head_x + dx, head_y + dy)
# 碰撞检测
if (new_head in self.snake or
not (0 <= new_head[0] < self.width) or
not (0 <= new_head[1] < self.height)):
self.game_over()
return
self.snake.insert(0, new_head)
# 吃食物
if new_head == self.food:
self.score += 10
if self.score > self.high_score:
self.high_score = self.score
self.save_high_score()
self.food = self.generate_food()
self.update_score()
else:
self.snake.pop()
self.draw()
self.master.after(self.speed, self.move)
def start_game(self):
"""开始游戏"""
if not self.game_active:
self.reset_game()
self.game_active = True
self.btn_start.config(state=tk.DISABLED)
self.btn_stop.config(state=tk.NORMAL)
self.move()
def stop_game(self):
"""结束游戏"""
if self.game_active:
self.game_active = False
self.btn_start.config(state=tk.NORMAL)
self.btn_stop.config(state=tk.DISABLED)
messagebox.showinfo("游戏结束",
f"游戏已结束!本次得分: {self.score}")
def game_over(self):
"""游戏结束处理"""
self.game_active = False
self.btn_start.config(state=tk.NORMAL)
self.btn_stop.config(state=tk.DISABLED)
messagebox.showinfo("游戏结束",
f"游戏失败!最终得分: {self.score}\n历史最高分: {self.high_score}")
self.draw()
if __name__ == "__main__":
root = tk.Tk()
game = SnakeGame(root)
root.mainloop()

今天就记录到这里。
`