最近读了魔方有什么难的,七步还原法 (toutiao.com),终于平生第一次把魔方还原了。以前拿起魔方瞎鼓捣,能还原一面都已经是侥幸。现在知道了,玩魔方是需要记公式的。问题在于,记公式对于我也很难。于是拿起Python,编写一个魔方仿真游戏,将公式记录在Python程序中,可以根据公式自动旋转魔方。

该项目适合大二学习了《数据结构》的学生。要求使用tkinter建立窗口程序、turtle绘制魔方

1 数据结构

使用9*12的二维数组记录魔方数据

上图是魔方所有面的平面表示,如果用立体视觉,只能看到三面,约定,中间交叉的面为front面,其右为right面,其上为upper面,此三面为立体可见。

数组初始化cube_list=[[0 for i in range(12)] for i in range(9)]# cube_list=[[0]*12]*9 这种初始化方式是错误的

2 算法

魔方的各种旋转,实际上就是线性表元素的移动和矩阵旋转

3 难点

1)根据魔方数组绘制立体魔方,平面图与立体图的对应关系。

2)即使魔方旋转一面,都涉及到多个面上的数据移动或旋转,需要仔细观察

3)魔方的各种旋转,可以设计成Python函数,比如,设计一个R函数实现R旋转,Rp函数实现R'旋转...公式是旋转的组合,比如公式:URU'R'U'F'UF,难点在于如何根据公式调用对应的函数?

4)随着魔方旋转,turtle绘制的图形越来越多,会越变越慢,该问题也可查资料解决。

4 运行界面

1)开局

2)打乱魔方

3)用公式做出顶部蓝色十字,再还原出蓝色面

5 代码(略)

6 展望

该课题可以进一步实现计算机自动还原魔方

Python练手项目:玩转魔方相关推荐

  1. 70个Python练手项目列表 预祝大家 快乐

    小孩眺望远方,成人怀念故乡. 为此给大家分享一下珍藏的Python实战项目,祝大家节日快乐哦!!! Python 前言:不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说 ...

  2. Python毕设-【课堂人脸签到系统】附源码课件/Python练手项目/Python毕业设计

    Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 文章目录 Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 系统简介 一.本课题拟解决的问题 二.系统技术栈 三.开发工具 四.数 ...

  3. Python毕设-【人脸签到系统】附源码/Python练手项目/Python毕业设计

    本人承诺只做技术分享,永不收费. V----------------->:专栏详情 文章目录 本人承诺只做技术分享,永不收费. V----------------->:专栏详情 一.背景 ...

  4. 70个Python练手项目列表,偷偷练习卷死他们

    不管学习哪门语言都要做出实际的东西来,这个实际的东西就是项目 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自己想做的项目进行参考学习练手,你也可以从中寻找灵感去做自己 ...

  5. 10个不到500行代码的超牛Python 练手项目

    10个不到500行代码的超牛Python 练手项目 图:内容概览.注:本文内容由实验楼搜集.整理自Github,实际项目版权归原作者所有. 以下10个练手项目均摘录自一本尚未出版的 Python 神书 ...

  6. python练手项目:2048实现与总结

    python练手项目:利用curses界面对2048的实现与总结 涉及的知识点 基本实现 UI展示 curses的初始化方法:wrapper curses的屏幕展示语句:addscr curses正式 ...

  7. python项目-推荐 10 个有趣的 Python 练手项目

    想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...

  8. 有趣的python项目 国外_推荐 10 个有趣的Python练手项目

    想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼,因此,我为大家准备了10个 ...

  9. python 适合做什么生意好_推荐 10 个有趣的 Python 练手项目

    想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...

  10. 100个python练手项目-推荐 10 个有趣的 Python 练手项目

    想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...

最新文章

  1. C语言中的位运算和逻辑运算
  2. Oracle 11gR2 RAC恢复OCR和VOTE DISK
  3. 「Python基础知识」Python的split方法如何使用
  4. java实现多个数字求和_图形化界面
  5. 系统性能评价的关键指标指标
  6. 吴恩达机器学习课程笔记
  7. 全网详细接口测试ApiPost详细教程(实战),吐血整理
  8. 无光驱、软驱、USB全NTFS格式硬盘上安装WinXP
  9. 迅雷“应版权方要求,文件无法下载”完美解决方法!(¥28)
  10. 云栖干货回顾 | 行业顶级NoSQL成员坐阵,NoSQL数据库专场重点解析!
  11. 洛谷blog传送门qwq
  12. 从0到1详解推荐系统的基础知识与整体框架
  13. 平安新一贷怎么被拒了及原因是什么?你都知道吗?
  14. 初中生直升高中定下来了?预计2023年全面落实?教育部的回应来了
  15. Lattice SII9293CNUC 接收器 集成电路IC
  16. 对话框处理TAB按键事件的三种方法
  17. AKABEiSOFT2经典作品推荐 車輪の国、向日葵の少女( 攻略、汉化、特典、PSP转换器)
  18. maven添加jra包
  19. 小白转行软件测试,专业不对口,能找到工作吗?
  20. aosp集成frida-gadget

热门文章

  1. 带你了解递归算法的时间复杂度
  2. 华为p10计算机器在哪,华为P10怎么连接电脑教程
  3. Jumpserver堡垒机部署(完整过程)
  4. java实现Word 文档形式的导出功能
  5. 一、采样频率到底是选择2倍还是10倍?让我用python来给你展示
  6. Linux命令中特殊符号
  7. idea各种中文乱码问题
  8. 【Web】HTML 账号注册页面
  9. Revit二次开发从入门到精通学习之路, (含Revit二次开发教程下载)
  10. 【林达华】How To Get A Solution