Python练手项目:玩转魔方
最近读了魔方有什么难的,七步还原法 (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练手项目:玩转魔方相关推荐
- 70个Python练手项目列表 预祝大家 快乐
小孩眺望远方,成人怀念故乡. 为此给大家分享一下珍藏的Python实战项目,祝大家节日快乐哦!!! Python 前言:不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说 ...
- Python毕设-【课堂人脸签到系统】附源码课件/Python练手项目/Python毕业设计
Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 文章目录 Python毕设-[课堂人脸签到系统]附源码课件/允许白嫖 系统简介 一.本课题拟解决的问题 二.系统技术栈 三.开发工具 四.数 ...
- Python毕设-【人脸签到系统】附源码/Python练手项目/Python毕业设计
本人承诺只做技术分享,永不收费. V----------------->:专栏详情 文章目录 本人承诺只做技术分享,永不收费. V----------------->:专栏详情 一.背景 ...
- 70个Python练手项目列表,偷偷练习卷死他们
不管学习哪门语言都要做出实际的东西来,这个实际的东西就是项目 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自己想做的项目进行参考学习练手,你也可以从中寻找灵感去做自己 ...
- 10个不到500行代码的超牛Python 练手项目
10个不到500行代码的超牛Python 练手项目 图:内容概览.注:本文内容由实验楼搜集.整理自Github,实际项目版权归原作者所有. 以下10个练手项目均摘录自一本尚未出版的 Python 神书 ...
- python练手项目:2048实现与总结
python练手项目:利用curses界面对2048的实现与总结 涉及的知识点 基本实现 UI展示 curses的初始化方法:wrapper curses的屏幕展示语句:addscr curses正式 ...
- python项目-推荐 10 个有趣的 Python 练手项目
想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...
- 有趣的python项目 国外_推荐 10 个有趣的Python练手项目
想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼,因此,我为大家准备了10个 ...
- python 适合做什么生意好_推荐 10 个有趣的 Python 练手项目
想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...
- 100个python练手项目-推荐 10 个有趣的 Python 练手项目
想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...
最新文章
- C语言中的位运算和逻辑运算
- Oracle 11gR2 RAC恢复OCR和VOTE DISK
- 「Python基础知识」Python的split方法如何使用
- java实现多个数字求和_图形化界面
- 系统性能评价的关键指标指标
- 吴恩达机器学习课程笔记
- 全网详细接口测试ApiPost详细教程(实战),吐血整理
- 无光驱、软驱、USB全NTFS格式硬盘上安装WinXP
- 迅雷“应版权方要求,文件无法下载”完美解决方法!(¥28)
- 云栖干货回顾 | 行业顶级NoSQL成员坐阵,NoSQL数据库专场重点解析!
- 洛谷blog传送门qwq
- 从0到1详解推荐系统的基础知识与整体框架
- 平安新一贷怎么被拒了及原因是什么?你都知道吗?
- 初中生直升高中定下来了?预计2023年全面落实?教育部的回应来了
- Lattice SII9293CNUC 接收器 集成电路IC
- 对话框处理TAB按键事件的三种方法
- AKABEiSOFT2经典作品推荐 車輪の国、向日葵の少女( 攻略、汉化、特典、PSP转换器)
- maven添加jra包
- 小白转行软件测试,专业不对口,能找到工作吗?
- aosp集成frida-gadget