设为首页 加入收藏

TOP

chatgpt写程序-python小游戏-2048-pygame(一)
2023-07-23 13:44:20 】 浏览:62
Tags:chatgpt 程序 -python 游戏 -2048-pygame

闲的没事,用chatpgt弄了个小游戏,2048,利用pygame实现,无额外贴图。

只需要告诉他写个python游戏2048,只用pygame实现,不要额外贴图。然后在他暂停后说请继续,最后会有一些bug,把报错告诉他,慢慢改,10分钟就可以完成。

效果如下图:

 

 

 

 

具体代码如下:

  1 import pygame
  2 import random
  3 
  4 # 游戏界面的尺寸
  5 WIDTH = 400
  6 HEIGHT = 400
  7 
  8 # 游戏界面的背景颜色
  9 BACKGROUND_COLOR = (187, 173, 160)
 10 TEXT_COLOR = (119, 110, 101)
 11 GAME_OVER_COLOR = (0, 0, 0)
 12 
 13 # 格子的尺寸和间距
 14 CELL_SIZE = 80
 15 CELL_MARGIN = 10
 16 TILE_SIZE = 100
 17 TILE_MARGIN = 10
 18 GAME_OVER_FONT_SIZE = 72
 19 SIZE = 500
 20 
 21 # 数字方块的颜色和字体
 22 TILE_COLORS = {
 23     0: (204, 192, 179),
 24     2: (238, 228, 218),
 25     4: (237, 224, 200),
 26     8: (242, 177, 121),
 27     16: (245, 149, 99),
 28     32: (246, 124, 95),
 29     64: (246, 94, 59),
 30     128: (237, 207, 114),
 31     256: (237, 204, 97),
 32     512: (237, 200, 80),
 33     1024: (237, 197, 63),
 34     2048: (237, 194, 46),
 35     4096: (174, 207, 48)
 36 }
 37 pygame.font.init()
 38 TILE_FONT = pygame.font.SysFont("Arial", 40, bold=True)
 39 
 40 
 41 def draw_text(surface, text, color, x, y):
 42     """
 43     在指定位置绘制文本
 44     """
 45     text_surface = TILE_FONT.render(text, True, color)
 46     text_rect = text_surface.get_rect()
 47     text_rect.center = (x, y)
 48     surface.blit(text_surface, text_rect)
 49 
 50 
 51 def draw_tile(surface, x, y, value):
 52     """
 53     在指定位置绘制数字方块
 54     """
 55     color = TILE_COLORS[value]
 56     pygame.draw.rect(surface, color, (x, y, CELL_SIZE, CELL_SIZE))
 57     if value != 0:
 58         text_color = (255, 255, 255) if value < 8 else (119, 110, 101)
 59         draw_text(surface, str(value), text_color, x + CELL_SIZE / 2, y + CELL_SIZE / 2)
 60 
 61 
 62 def draw_board(surface, board):
 63     """
 64     绘制游戏界面上的数字方块
 65     """
 66     for row in range(4):
 67         for col in range(4):
 68             x = col * CELL_SIZE + (col + 1) * CELL_MARGIN
 69             y = row * CELL_SIZE + (row + 1) * CELL_MARGIN
 70             draw_tile(surface, x, y, board[row][col])
 71 
 72 
 73 def generate_tile(board):
 74     """
 75     在空白格子中随机生成数字方块
 76     """
 77     available_cells = []
 78     for row in range(4):
 79         for col in range(4):
 80             if board[row][col] == 0:
 81                 available_cells.append((row, col))
 82     if available_cells:
 83         row, col = random.choice(available_cells)
 84         board[row][col] = 2
 85         return True
 86     else:
 87         return False
 88 
 89 
 90 def move_tiles(board, direction):
 91     """
 92     根据方向移动数字方块
 93     """
 94     moved = False
 95     if direction == "left":
 96         for row in range(4):
 97             for col in range(1, 4):
 98                 if board[row][col] != 0:
 99                     for k in range(col):
100                         if board[row][k] == 0 and no_obstacles(board, row, k, row, col):
101                             board[row][k] = board[row][col]
102                             board[row][col] = 0
103                             moved = True
104                             break
105                         elif board[row][k] == board[row][col] and no_obstacles(board, row, k, row, col):
106                             board[row][k] *= 2
107                             board[row][col] = 0
108                             moved = True
109                             break
110     elif direction == "right":
111         for row in range(4):
112             for col in range(2, -1, -1):
113                 if board[row][col] != 0:
114                     for k in range(3, col, -1):
115                         if board[row][k] == 0 and no_obstacles(board, row, col, row, k):
116                             board[row][k] = board[row][col]
117                             board[row][col] = 0
118                             moved = True
119                             break
120                         elif board[row][k] == board[row][col] and no_obstacles(board, row, col, row, k):
121                             board[row][k] *= 2
122                             board[row][col] = 0
123                             moved = True
124                             break
125     elif direction == "up":
126         for col in range(4):
127             for row in range(1, 4):
128                 if board[row][col] != 0:
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SICP:求值和环境模型(Python实.. 下一篇Python工具箱系列(二十八)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目