【莱斯大学 Python交互编程入门】 作业Week5 Memory
来源:互联网 发布:征信数据 编辑:程序博客网 时间:2024/06/06 09:00
这一题还是花了一些时间的,参考了Crystalleaf1989的博客,实现的方法略有不同。
先生成底层的数字,再生成上层的方块,鼠标点击后将方块移除,判断两次点击的数字相同,保持方块不显示的状态。
#!/usr/bin/env python# encoding: utf-8"""@author: steve@license: Apache Licence @software: PyCharm Community Edition@file: week5_Memory.py@time: 2017/11/4 15:31"""# implementation of card game - Memoryimport SimpleGUICS2Pygame.simpleguics2pygame as simpleguiimport random# helper function to initialize globalsdef new_game(): global state, numbers, card_pos, exposed, turn state = 0 turn = 0 numbers = [i for i in range(8)] * 2 random.shuffle(numbers) exposed = [0 for i in range(16)] card_pos = [(50 * i) for i in range(16)] print exposed, state# define event handlersdef mouseclick(pos): global exposed, state, n1, n2, turn, numbers if state == 0: for i in range(16): if pos[0] >= 50 * i and pos[0] <= 50 * i + 50: if exposed[i] == 0: exposed[i] = 1 n1 = i state = 1 elif state == 1: for i in range(16): if pos[0] >= 50 * i and pos[0] <= 50 * i + 50: if exposed[i] == 0: exposed[i] = 1 n2 = i state = 2 turn += 1 l.set_text("Turns = " + str(turn)) else: for i in range(16): if pos[0] >= 50 * i and pos[0] <= 50 * i + 50: if numbers[n1] == numbers[n2]: exposed[n1] = 1 exposed[n2] = 1 else: exposed[n1] = 0 exposed[n2] = 0 if exposed[i] == 0: exposed[i] = 1 n1 = i state = 1 print exposed, state# cards are logically 50x100 pixels in sizedef draw(canvas): global numbers, exposed n = 0 for i in numbers: canvas.draw_text(str(i), [15 + n * 50, 60], 50, "White") n += 1 for i in range(16): if exposed[i] == 0: canvas.draw_polygon([[card_pos[i], 0], [card_pos[i] + 50, 0], [card_pos[i] + 50, 100], [card_pos[i], 100]], 2, "Black", "Green")# create frame and add a button and labelsframe = simplegui.create_frame("Memory", 800, 100)frame.add_button("Restart", new_game)l = frame.add_label("Turns = 0")# register event handlersframe.set_mouseclick_handler(mouseclick)frame.set_draw_handler(draw)# get things rollingnew_game()frame.start()# Always remember to review the grading rubric
阅读全文
0 0
- 【莱斯大学 Python交互编程入门】 作业Week5 Memory
- Python交互编程入门
- 莱斯大学Python课程Mini-project#5 - Memory
- Coursera机器学习 week5 神经网络的学习 编程作业代码
- [Coursera机器学习]Neural Networks Learning WEEK5编程作业
- coursera Python交互编程入门 习题答案
- 【算法设计作业】week5
- week5
- Socket编程入门:一对一交互
- 关于我的第一次大学商品打折编程作业
- Coursera普林斯顿大学算法课-编程作业1: Percolation
- Memory作业分析(基于CodeSculptor,python 2.7)
- Stanford 机器学习 Week5 作业: Neural Networks: Learning
- Python编程入门
- python 并发编程入门
- Python网络编程入门
- Python socket 编程入门
- Python编程入门---day1
- 1134 最长递增子序列
- 这
- 算法设计与分析——分治法
- php 7之PhpStorm + Nginx + Xdebug运行调试
- 异常处理 1
- 【莱斯大学 Python交互编程入门】 作业Week5 Memory
- 做seo别钻牛角尖
- 漫漫刷题路(1)
- 触摸屏Sensor叠构实例学习记录(一)
- 逻辑回归应用之Kaggle泰坦尼克之灾
- 反思
- 欢迎使用CSDN-markdown编辑器
- 配置centos6
- 水仙花数 Output Limit Exceeded