专栏首页Python高效编程python 实现 2048 游戏 (一)

python 实现 2048 游戏 (一)

初学 python ,大家恐怕都想找到一条终南捷径,会产生譬如 3 天精通 python 这样不太切合实际的想法。这种想法是危险的,一旦你发现你根本不可能做到,你就会变得灰心丧气,甚至演变成 python 从入门到放弃的局面。

实际上学习编程从来没有一步登天的捷径。但对很多人来说,实践是十分有效的学习方法。这自然不是康庄大道,一路上你必须披荆斩棘,历尽坎坷与辛苦,然而你越努力、回报也就越丰厚。所以就让我们一步一个脚印,实现简易版的 2048小游戏吧。

第一讲主要介绍编写 2048 游戏的前置知识

规则

2048 游戏是一款即时休闲游戏。

游戏规则:玩家通过 w s a d 控制数字移动方向,达成 2048 这个数字即获胜。

每次可以选择一个方向移动,数字便会朝这个方向移动,如果遇到相同数字就相加,遇到不同数字或者边界就停止移动。同时会在空白的地方生成 2 或者 4 的随机数字。通过不断相撞、相加,最后达成 2048 这个数字。

游戏结构图

运行环境

win 10 :

编辑器:Pycharm

版本: python 3.6

: curses + numpy(pip install numpy) + copy

ubuntu 16.04 :

编辑器:vim

版本: Anaconda + python 3.6

: curses + numpy + copy

windows 安装 curses

curses

网址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses

下载 curses-2.2+utf8-cp36-cp36m-win_amd64.whl

1pip install --upgrade curses-2.2+utf8-cp36-cp36m-win_amd64.whl

curses 用法简介

curses 用于终端 shell 显示图形:

 1# 屏幕不显示用户输入的字符
 2curses.noecho()
 3# 使用 curses 首先需要初始化
 4stdscr = curses.initscr()
 5# stdscr.getchar() 返回的是
 6# 输入的单个字符的 ascii 码值
 7# 假如输入'p',返回 112
 8stdscr.getch()
 9# 清除屏幕
10stdscr.clear()
11# 打印字符
12stdscr.addstr('You win')

功能模块

在这个简易版的 2048 游戏中,可以分为六大功能模块:

初始化模块:初始化棋盘

主进程模块:统筹各个函数模块

随机数模块:在棋盘上随机产生 2 或 4

操作模块:读取用户输入,并执行相应操作

显示模块:显示棋盘

分数模块: 当前得分与最高得分

这一节主要介绍了 2048 小游戏的基本知识,下一节将介绍实现 2048 小游戏的各个模块的逻辑。最后放一张实现效果图

本文分享自微信公众号 - Python高效编程(gh_53af3cd256b6),作者:flywind

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 快来算一算你写了多少行代码

    前面我们一直在介绍图形界面,这次换个口味,在命令行实现代码行数统计程序。本程序共 135 行,其中 18 行空行、110 行有效代码、7行注释,大小为 7.71...

    用户2870857
  • Python 实现生命游戏

    这次我们使用 Python 来实现生命游戏,这是一种简单的元胞自动机。基于一定规则,程序可以自动从当前状态推演到下一状态。制作的成品如下:

    用户2870857
  • win10 小而美的软件

    强悍、 轻巧、 干净。界面简单易用,没有纷繁复杂的功能,没有“全家桶”服务,没有广告的骚扰。偶尔提示你阻止下某某游戏中心的安装,或者某某软件的弹窗。或者在后台默...

    用户2870857
  • 微信聊天记录如何快速恢复,这3点你get到了吗

    微信聊天记录如何快速恢复,相信这个问题一定难倒不少用户,那么微信聊天记录误删了到底能不能恢复呢?答案是非常肯定的,现在的恢复技术相比较之前完全可以轻松做到,那么...

    科技脑洞在线
  • SpringMVC ServletRequestAttributes的应用

    在SpringMVC的源代码中提供了一个封装过的ThreadLocal,其中保存了每次请求的HttpServletRequest对象,(详细请看org.spri...

    多凡
  • 一文带你读懂:最小栈问题

    设一个变量int min = -1; 当一个元素进入栈时,把最小值的下标记录成0,后面进来的数和stack[min]做比较,如果大于等于当前的最小值,那就不做变...

    我的小碗汤
  • 漫画:最小栈问题

    设一个变量int min = -1; 当一个元素进入栈时,把最小值的下标记录成0,后面进来的数和stack[min]做比较,如果大于等于当前的最小值,那就不做变...

    CSDN技术头条
  • 大数据处理:云应用应具备哪些特征?

    在波士顿大数据创新会议上的一个对话会上,IBM云数据服务事业部产品开发副总裁迈克·奥罗克(Mike O’Rourke)表示,所有四个特性,包括在论证中的数据所有...

    静一
  • 【学术】实践教程:使用神经网络对犬种进行分类

    几天前,我注意到由Kaggle主办的犬种识别挑战赛。我们的目标是建立一个模型,能够通过“观察”图像来进行犬种分类。我开始考虑可能的方法来建立一个模型来对犬种进行...

    AiTechYun
  • 刷脸门禁和无人清扫只是前戏,百度大脑要做最智能的地产物业

    与区块链等新技术正在苦苦找场景不同,人工智能在各行各业的落地已进入实质性阶段,特别是在金融、教育、营销、娱乐等模式相对教轻、与数据打交道较多的行业。从中国AI巨...

    罗超频道

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动