chatgpt写程序-python小游戏-2048-pygame

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

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

效果如下图:

具体代码如下:

import pygame
import random# 游戏界面的尺寸
WIDTH = 400
HEIGHT = 400# 游戏界面的背景颜色
BACKGROUND_COLOR = (187, 173, 160)
TEXT_COLOR = (119, 110, 101)
GAME_OVER_COLOR = (0, 0, 0)# 格子的尺寸和间距
CELL_SIZE = 80
CELL_MARGIN = 10
TILE_SIZE = 100
TILE_MARGIN = 10
GAME_OVER_FONT_SIZE = 72
SIZE = 500# 数字方块的颜色和字体
TILE_COLORS = {0: (204, 192, 179),2: (238, 228, 218),4: (237, 224, 200),8: (242, 177, 121),16: (245, 149, 99),32: (246, 124, 95),64: (246, 94, 59),128: (237, 207, 114),256: (237, 204, 97),512: (237, 200, 80),1024: (237, 197, 63),2048: (237, 194, 46),4096: (174, 207, 48)
}
pygame.font.init()
TILE_FONT = pygame.font.SysFont("Arial", 40, bold=True)def draw_text(surface, text, color, x, y):"""在指定位置绘制文本"""text_surface = TILE_FONT.render(text, True, color)text_rect = text_surface.get_rect()text_rect.center = (x, y)surface.blit(text_surface, text_rect)def draw_tile(surface, x, y, value):"""在指定位置绘制数字方块"""color = TILE_COLORS[value]pygame.draw.rect(surface, color, (x, y, CELL_SIZE, CELL_SIZE))if value != 0:text_color = (255, 255, 255) if value < 8 else (119, 110, 101)draw_text(surface, str(value), text_color, x + CELL_SIZE / 2, y + CELL_SIZE / 2)def draw_board(surface, board):"""绘制游戏界面上的数字方块"""for row in range(4):for col in range(4):x = col * CELL_SIZE + (col + 1) * CELL_MARGINy = row * CELL_SIZE + (row + 1) * CELL_MARGINdraw_tile(surface, x, y, board[row][col])def generate_tile(board):"""在空白格子中随机生成数字方块"""available_cells = []for row in range(4):for col in range(4):if board[row][col] == 0:available_cells.append((row, col))if available_cells:row, col = random.choice(available_cells)board[row][col] = 2return Trueelse:return Falsedef move_tiles(board, direction):"""根据方向移动数字方块"""moved = Falseif direction == "left":for row in range(4):for col in range(1, 4):if board[row][col] != 0:for k in range(col):if board[row][k] == 0 and no_obstacles(board, row, k, row, col):board[row][k] = board[row][col]board[row][col] = 0moved = Truebreakelif board[row][k] == board[row][col] and no_obstacles(board, row, k, row, col):board[row][k] *= 2board[row][col] = 0moved = Truebreakelif direction == "right":for row in range(4):for col in range(2, -1, -1):if board[row][col] != 0:for k in range(3, col, -1):if board[row][k] == 0 and no_obstacles(board, row, col, row, k):board[row][k] = board[row][col]board[row][col] = 0moved = Truebreakelif board[row][k] == board[row][col] and no_obstacles(board, row, col, row, k):board[row][k] *= 2board[row][col] = 0moved = Truebreakelif direction == "up":for col in range(4):for row in range(1, 4):if board[row][col] != 0:for k in range(row):if board[k][col] == 0 and no_obstacles(board, k, col, row, col):board[k][col] = board[row][col]board[row][col] = 0moved = Truebreakelif board[k][col] == board[row][col] and no_obstacles(board, k, col, row, col):board[k][col] *= 2board[row][col] = 0moved = Truebreakelif direction == "down":for col in range(4):for row in range(2, -1, -1):if board[row][col] != 0:for k in range(3, row, -1):if board[k][col] == 0 and no_obstacles(board, row, col, k, col):board[k][col] = board[row][col]board[row][col] = 0moved = Truebreakelif board[k][col] == board[row][col] and no_obstacles(board, row, col, k, col):board[k][col] *= 2board[row][col] = 0moved = Truebreakreturn moveddef no_obstacles(board, row1, col1, row2, col2):"""判断两个位置之间是否有障碍物(即是否有数字方块)"""if row1 == row2:for col in range(col1 + 1, col2):if board[row1][col] != 0:return Falseelif col1 == col2:for row in range(row1 + 1, row2):if board[row][col1] != 0:return Falsereturn Truedef game_over(board):"""判断游戏是否结束"""for row in range(4):for col in range(4):if board[row][col] == 0:return Falsefor row in range(4):for col in range(3):if board[row][col] == board[row][col + 1]:return Falsefor col in range(4):for row in range(3):if board[row][col] == board[row + 1][col]:return Falsereturn Truedef add_new_tile(board):# 查找所有空白的方格empty_tiles = [(i, j) for i in range(4) for j in range(4) if board[i][j] == 0]# 如果没有空白的方格,返回 Falseif len(empty_tiles) == 0:return False# 随机选择一个空白的方格,并随机放入数字 2 或 4row, col = random.choice(empty_tiles)board[row][col] = random.choice([2, 4])return Truedef get_tile_color(value):colors = {2: (238, 228, 218),4: (237, 224, 200),8: (242, 177, 121),16: (245, 149, 99),32: (246, 124, 95),64: (246, 94, 59),128: (237, 207, 114),256: (237, 204, 97),512: (237, 200, 80),1024: (237, 197, 63),2048: (237, 194, 46),}return colors.get(value, (0, 0, 0))def get_font_size(value):if value < 100:return 64elif value < 1000:return 48else:return 36def main():# 初始化游戏界面pygame.init()screen = pygame.display.set_mode((SIZE, SIZE))pygame.display.set_caption("2048 Game")# 初始化游戏板board = [[0] * 4 for i in range(4)]add_new_tile(board)add_new_tile(board)while True:# 处理事件for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()sys.exit()elif event.type == pygame.KEYDOWN:moved = Falseif event.key == pygame.K_LEFT:moved = move_tiles(board, "left")elif event.key == pygame.K_RIGHT:moved = move_tiles(board, "right")elif event.key == pygame.K_UP:moved = move_tiles(board, "up")elif event.key == pygame.K_DOWN:moved = move_tiles(board, "down")if moved:add_new_tile(board)# 绘制游戏界面screen.fill(BACKGROUND_COLOR)for row in range(4):for col in range(4):x = col * TILE_SIZE + TILE_MARGIN * (col + 1)y = row * TILE_SIZE + TILE_MARGIN * (row + 1)tile_color = get_tile_color(board[row][col])pygame.draw.rect(screen, tile_color, (x, y, TILE_SIZE, TILE_SIZE))if board[row][col] != 0:font_size = get_font_size(board[row][col])font = pygame.font.Font(None, font_size)text = font.render(str(board[row][col]), True, TEXT_COLOR)text_rect = text.get_rect()text_rect.center = (x + TILE_SIZE / 2, y + TILE_SIZE / 2)screen.blit(text, text_rect)# 判断游戏是否结束if game_over(board):font = pygame.font.Font(None, GAME_OVER_FONT_SIZE)text = font.render("Game Over!", True, GAME_OVER_COLOR)text_rect = text.get_rect()text_rect.center = (SIZE / 2, SIZE / 2)screen.blit(text, text_rect)pygame.display.update()if __name__ == "__main__":main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4275.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10秒钟,chatgpt帮你生成简单贪吃蛇游戏

场景&#xff1a; 制作一个简单html贪吃蛇游戏 方法 <!DOCTYPE html> <html> <head><title>贪吃蛇</title><style>body {margin: 0;padding: 0;}canvas {border: 1px solid black;}</style> </head> <body><canvas …

两句话,ChatGPT帮我写一个打飞机的游戏

大家好&#xff0c;我是全村的希望 今天的主题是让 chatGPT 来帮我们写一个打飞机的游戏 记得我刚学 Python 的时候&#xff0c;看的那本很经典的入门书《Python 编程&#xff1a;从入门到实践》&#xff0c;里面就有小项目就是教你编写一个打飞机的游戏 我那时候是对着书一个一…

chatgpt赋能python:Python用于股票:掌握数据、分析趋势

Python用于股票&#xff1a;掌握数据、分析趋势 在当今数字化时代&#xff0c;投资者使用数据分析技术作出投资决策变得越来越重要&#xff0c;而Python正是一种无形中帮助投资者进行数据分析的强有力工具。Python是一种高级数据分析语言&#xff0c;具有易读易懂的语法和强大…

金融人又慌了?ChatGPT解锁新用法:破解美联储“谜语”,预测股票走势

生成式AI风暴来袭&#xff0c;ChatGPT会抢走金融分析师的饭碗吗&#xff1f; 好消息是&#xff0c;像ChatGPT这样的产品很可能无法通过CFA考试&#xff0c;敲开通往大型金融机构的大门&#xff0c;但坏消息是&#xff0c;它们能取得经济学和法学学位&#xff0c;在一定程度上可…

Excel股票个股分析工具

采用Excel对个股信息分析展示 从多维度&#xff0c;如基本面&#xff0c;技术面&#xff0c;活跃度&#xff0c;行业表现等对个股进行分析 后台通过VBA在开放API实时获取数据 Excel文件下载地址&#xff1a; Excel股票分析工具_个股-桌面系统文档类资源-CSDN下载Excel个股信…

[AHK]腾讯实时股票数据接口

腾讯财经接口 获取最新行情 以五粮液为例&#xff0c;要获取最新行情&#xff0c;访问数据接口&#xff1a; qt.gtimg.cn/qsz000858 返回数据&#xff1a; v_sz000858"51~五 粮 液~000858~27.78~27.60~27.70~417909~190109~227800~27.78~492~27.77~332~27.76~202~27.75~33…

【量化分析】如何下载和显示股票交易数据

目录 一、说明 二、数据获取工具Tushare 2.1 Tushare简介 2.2 Tushare安装 三、介绍mplfinance模块 3.1 mplfinance — matplolib 用于绘制财务数据的不为人知的库 3.2 安装 四、mplfinance显示财务数据 4.1 显示数据约定 4.2 数据预处理 4.3 预处理代码解释 4.4 股…

个股解析软件排名推荐,股票行情分析软件排名

炒股软件排名前十强&#xff0c;那个好些&#xff1f; 第1名&#xff1a;同花顺。老牌付费炒股软件&#xff0c;凭借多年的积累具有一定数量的付费人群。第2名&#xff1a;经传多赢。7大经典盈利模式&#xff0c;一站式解决炒股难题。第3名&#xff1a;大智慧。拥有最大数量的…

Python+Tushare股票数据分析

Tushare是一个免费提供各类金融数据 , 助力智能投资与创新型投资的平台。在这个平台上可以免费获得股票、期货和外汇的各种数据。&#xff08;Tushare ID&#xff1a;492265&#xff09; 本次我就使用Tushare来获取股票数据&#xff0c;模拟股票交易。 一、Tushare的注册安装…

ChatGPT炒股:查询分析某个公募基金的持仓变化

如果很认同某个基金经理的投资理念&#xff0c;可以跟踪基金经理的持仓变化&#xff0c;可以获取一些投资的线索。手动操作也可以实现&#xff0c;但略微麻烦&#xff0c;如果利用ChatGPT写一个跟踪程序&#xff0c;就方便多了。 下面以汇丰晋信副总经理、投资总监、知名基金经…

股票、指数、快照、逐笔... 不同行情数据源的实时关联分析应用

在进行数据分析时经常需要对多个不同的数据源进行关联操作&#xff0c;因此在各类数据库的 SQL 语言中均包含了丰富的 join 语句&#xff0c;以支持批计算中的多种关联操作。 DolphinDB 不仅通过 join 语法支持了对于全量历史数据的关联处理&#xff0c;而且在要求低延时的实时…

股票分析及利用tushare查看股票部分信息

股票分析及利用tushare查看股票部分数据 观前提示&#xff1a;本文面向和我一样不懂炒股的投资小白 本文涉及&#xff1a; 利用python调用tushare最基础的少量操作&#xff08;查看股价及可类推的基本数据、将多支股票数据放到一个DataFrame并作图&#xff09; 可能存在逻辑…

股票分析工具

1.软件运行界面 2.安装密码:www.luoruiyuan.cn 3.使用说明: 1.填写您的邮箱地址和邮箱昵称方便可以买卖时提醒您,如果不填就不会通过邮箱提醒. 2.股票分析时股票代码框填写多个时请用英文逗号隔开,每一个股票都要添加上市场代码. 例如:601939.SH,600050.SH,000725.SZ 如果不知道…

利用tushare进行股票数据分析

笔者tushare ID&#xff1a;476408 在经过了半年时间的学习中&#xff0c;对熟练的使用tushare进行股票数据分析方面具有一定的基础&#xff0c;能够基本掌握一些常用的算法编程&#xff0c;以下就以自己在校期间的分析报告为分享内容。 利用tushare获取股票信息&#xff0c;…

如何客观的分析 ChatGPT技术

文章目录 如何客观的分析 ChatGPT技术1、GPT 自己的分析2、我的理解3、预训练模型4、ChatGPT 的隐患 (prompt 注入)如何客观的分析 ChatGPT技术 1、GPT 自己的分析 2、我的理解 OpenAI 发布的基于 GPT-3 模型构建的 ChatAI ,使用起来有许多的惊艳之处,但是我们也不得不看到…

个股与指数行情走势对比分析 !股票量化分析工具QTYX-V2.5.2

前言 股票分析过程中往往会同时查看一只股票多个周期的行情走势&#xff0c;比如日线和周线结合观察&#xff0c;60分钟和日线结合观察&#xff0c;也会同时查看一个板块中多个股票的行情走势。 还有一种场景也非常关键——把个股行情与对应指数的行情对比观察。比如选出一只股…

Tushare之股票数据分析

笔者ID&#xff1a;476408 已经使用了整整1年时间的Tushare&#xff0c;个人来讲&#xff0c;在使用过程中体验还是相当不错的。在获取数方面较全面&#xff0c;涵盖数据内容多&#xff0c;而且还不断完善丰富。 下面是利用Tushare 进行股票数据分析的部分。 import tushare…

玩转ChatGPT:制作AI播报视频

一、写在前面 羊了几天&#xff0c;上线就发现&#xff0c;GPT的第三方插件的数量越来越多&#xff0c;使得官方推出了搜索功能&#xff1a; 我逛了一圈&#xff0c;发现这个插件挺有意思&#xff0c;用来生成AI语音播报视频的。 下面给大家尝尝鲜。 二、实战过程 &#xff0…

用 ChatGPT 制作中英双语字幕

用 ChatGPT 制作中英双语字幕 0. 背景1. 使用剪映生成英文字幕2. 使用 ChatGPT 的制作中英双语字幕 0. 背景 最近在学习 AI 相关的知识&#xff0c;有很多视频是英文的。 为了提高学习效率&#xff0c;我考虑将这些视频加上中英双语字幕。 效果展示如下&#xff0c; 1. 使用…

怎样让chatGPT给你打工然后月入过千?

前言 代码在文末,仅供学习了,现在chatgpt以及百度文库改版较大运行不了了。 chatGPT最近火出圈了,怎么薅一个文字模型给你打工呢? 亲测效果: 20230104: 话不多说,直接上图,上个月12天的收益: 总结一下: 薅的对象百度文库创作中心:地址 除了每个文档一块三左右的收…