python的self.boardx -= 5 什么意思_python小白求帮助
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
剩下的一半在这
def reset_board(self):
for i, t in enumerate(self.tiles):
t.run_action(A.sequence(A.fade_to(0, 0.3), A.remove()))
new_tile = Tile(choice(colors))
new_tile.grid_pos = t.grid_pos
new_tile.position = t.position
new_tile.scale = 0
new_tile.run_action(A.scale_to(1, 0.5, TIMING_EASE_OUT_2))
self.root_node.add_child(new_tile)
self.tiles[i] = new_tile
def show_hint(self):
self.last_move_t = self.t
shuffled_tiles = list(self.tiles)
shuffle(shuffled_tiles)
for t in shuffled_tiles:
visited = set()
count = self.count_from(t, visited)
if len(visited) >= 3:
for s in visited:
s.run_action(A.repeat(
A.sequence(A.fade_to(0.1, 0.25), A.fade_to(1, 0.25)), 3))
break
else:
self.reset_board()
def touch_began(self, touch):
if touch.location.x < 48 and touch.location.y > self.size.h - 48:
self.show_pause_menu()
return
selected = [s for s in self.tiles if s.selected]
if selected:
return
t = self.tile_for_touch(touch)
if t:
sound.play_effect('ui:click2')
self.select_from(t)
def touch_ended(self, touch):
selected = [s for s in self.tiles if s.selected]
if not selected:
return
if len(selected) < 3:
for t in selected:
t.selected = False
sound.play_effect('ui:switch35')
else:
sound.play_effect('arcade:Coin_5', 0.15)
added_score = int((len(selected) * (len(selected) + 1) / 2) * 10)
self.score += added_score
self.score_label.text = str(self.score)
self.show_points(added_score, selected[-1].position)
self.remove_selected_tiles()
self.last_move_t = self.t
def show_pause_menu(self):
self.paused = True
self.menu = MenuScene('Paused', 'Highscore: %i' % self.highscore, ['Continue', 'New Game'])
self.present_modal_scene(self.menu)
def show_start_menu(self):
self.paused = True
self.menu = MenuScene('Match3', 'Highscore: %i' % self.highscore, ['New Game'])
self.present_modal_scene(self.menu)
def show_game_over_menu(self):
self.paused = True
self.menu = MenuScene('Time Up!', 'Score: %i' % (self.score), ['New Game'])
self.present_modal_scene(self.menu)
def menu_button_selected(self, title):
if title.startswith('Retro Mode'):
self.retro_mode = not self.retro_mode
self.root_node.shader = self.retro_shader if self.retro_mode else None
return 'Retro Mode: ' + ('On' if self.retro_mode else 'Off')
elif title in ('Continue', 'New Game'):
self.dismiss_modal_scene()
self.menu = None
self.paused = False
if title == 'New Game':
self.new_game()
def show_points(self, points, pos):
label = LabelNode('+%i' % (points,), font=('Avenir Next Condensed', 40), position=pos, z_position=1)
label.run_action(A.sequence(A.wait(0.5), A.fade_to(0, 0.5)))
label.run_action(A.sequence(A.move_by(0, 100, 1), A.remove()))
self.root_node.add_child(label)
def tile_for_touch(self, touch):
touch_pos = self.root_node.point_from_scene(touch.location)
for t in self.tiles:
if t.frame.contains_point(touch_pos):
return t
def tile_at(self, x, y):
if 0 <= x < COLS and 0 <= y < ROWS:
return self.tiles[y*COLS+x]
return None
def remove_selected_tiles(self):
new_tiles = []
for col in range(COLS):
drop = 0
for row in range(ROWS):
t = self.tile_at(col, row)
if t.selected:
drop += 1
else:
t.grid_pos = (t.grid_pos[0], max(0, t.grid_pos[1] - drop))
for i in range(drop):
row = ROWS - i - 1
new_tile = Tile(choice(colors), col, row)
new_tile.position = (24 + (col - 0.5*COLS) * 48,
24 + (row - 0.5*ROWS) * 48 + drop * 48)
new_tile.alpha = 0
new_tile.run_action(A.fade_to(1.0, 0.35))
new_tiles.append(new_tile)
self.root_node.add_child(new_tile)
all_tiles = self.tiles + new_tiles
self.tiles = [None] * (ROWS * COLS)
for t in all_tiles:
if t.selected:
t.run_action(A.sequence(A.fade_to(0.0, 0.15), A.remove()))
e = Emitter(t.img_name)
e.position = t.position
self.root_node.add_child(e)
else:
x, y = t.grid_pos
self.tiles[y*COLS+x] = t
dy = t.position.y - (y * 48 - ROWS * 24 + 24)
if dy > 0:
t.run_action(A.move_by(0, -dy, sqrt(dy/750.0), TIMING_EASE_IN_2))
def neighbors(self, tile):
result = []
x, y = tile.grid_pos
directions = [(0, -1), (1, 0), (0, 1), (-1, 0)]
for direction in directions:
neighbor = self.tile_at(x+direction[0], y+direction[1])
if neighbor and neighbor.img_name == tile.img_name:
result.append(neighbor)
return result
def count_from(self, tile, visited, count=1):
visited.add(tile)
neighbors = self.neighbors(tile)
for n in neighbors:
if not n in visited:
visited.add(n)
count += self.count_from(n, visited, count+1)
return count
def select_from(self, tile):
tile.selected = True
neighbors = self.neighbors(tile)
for n in neighbors:
if not n.selected:
n.selected = True
self.select_from(n)
if __name__ == '__main__':
if min(get_screen_size()) < 760:
# portrait-only on iPhone
run(Game(), PORTRAIT)
else:
# allow any orientation on iPad
run(Game())
python的self.boardx -= 5 什么意思_python小白求帮助相关推荐
- python实现三种以上判断条件_Python小课笔记--Python控制流:if逻辑判断
截图来自Python小课 文|仟樱雪 在Python小课-1-2-3节中,我们已经学习了基础模块--数据--数据类型(整数.字符串.浮点数),以及基础模块--变量,基础模块--函数(input函数.p ...
- python统计英文句子每个单词字数_Python小书3-文本英文单词统计
之前写Python Web小书第三小节本来用的垃圾邮件的案例三郎:Python贝叶斯推理垃圾邮件分类zhuanlan.zhihu.com 后来发现里面的东西,涉及到概率,程序太复杂了...哈哈哈 所 ...
- python更新版本会丢失库吗_Python小技巧:如何批量更新已安装的库?
点击蓝色"Python空间"关注我丫 加个"星标",每天一起快乐的学习 众所周知,升级某个库(假设为 xxx),可以用pip install --upgrade ...
- python if 语句第一个不程序_python小程序1--if语句
题目: 定义出一个name并提前赋值,如果name是python就打印welcome boss,否则打印name. 代码如下: flae=False name='lill' if name=='pyt ...
- python使用什么来区分代码块_Python 小数据池、代码块以及代码块缓存机制
按照惯例,吟诗一首:苏轼<江城子·乙卯正月二十日夜记梦> 十年生死两茫茫,不思量,自难忘.千里孤坟,无处话凄凉. 纵使相逢应不识,尘满面,鬓如霜. 夜来幽梦忽还乡,小轩窗,正梳妆.相顾无言 ...
- python用with读文件的好处_python小课堂39 - 用 with 优雅的读写文件
python小课堂39 - 用 with 优雅的读写文件 前言 本篇来介绍一下 Python 中的关键词 with 的小技巧.但是在了解 with 之前,需要先了解一下如何使用 Python 对文件进 ...
- python请输入一个人的名字_python小练习
1.字符串拼接 用两个字符串,将他们组合后输出. str1 = input("请输入一个人的名字:") str2 = input("请输入一个国家名字:") p ...
- 【爆肝更新】Python基础教程:第五章_Python函数
原创:公众号 数据说话 [爆肝更新]Python基础教程:第五章_Python函数 函数介绍 学习目标: 快速体验一下函数的使用 了解函数的作用. 函数:是组织好的,可重复使用的,用来实现特定功能的代 ...
- python读取邮件发送日期和时间_Python读取指定日期邮件的实例
背景:9月份有部分数据缺失,这部分数据在邮箱里,需要重新拉取,但是每天几百封邮件,总共有6.7万封邮件,使用stat()和retr(which)结合遍历很 耗时 基于如上背景,初始大致思路为: 使用二 ...
最新文章
- html 页面自适应窗口大小,JavaScript实现自适应窗口大小的网页
- aws lambda_为什么我会自动删除所有旧的推文以及我用来执行此操作的AWS Lambda函数...
- linux 解压 tar.gz 报错 gzip: stdin: not in gzip format
- 自考计算机应用技术实践考核,自考《计算机应用技术》实践环节指导
- java 抛出异常 返回值_java通过抛异常来返回提示信息
- 给我往死里贪!——24行代码AC_今年暑假不AC HDU - 2037(贪心模板讲解)
- Android开发Android studio之gradle打包apk重命名的方法
- 怎样在汉字后面加空格?
- 斐波那契数列(Fibonacci)递归和非递归实现
- (36)VHDL实现或非门型RS触发器
- 《Splunk智能运维实战》——2.8 列出浏览次数最多的产品
- RedisTemplate常用使用说明-opsForHash(3)
- sketchup草图家具拆单软件 有屋 衣柜橱柜 全屋定制 设计渲染生产一体化SU
- 一杯茶的时间,上手 Django 框架开发
- PNP三极管作为开关管如何使用(集电极接 负载)
- 微信公众号支付从前端到后台(小白教程)
- python输入一个三位整数、求逆序数_输入一个三位正整数,要求其输出对应的逆序数...
- 学机器学习的基础课程
- abuse file struct 阅读记录
- 1407 排名靠前的旅行者
热门文章
- “改造” VS Code 编辑器,一起写个插件吧!
- spring IOC和DI区别
- Jenkins自动构建(CI/DI)项目(一)
- iOS开发中一些有用的小代码
- 压缩比13为什么建议用92的油_纯干货|马自达发动机13:1压缩比,却可以烧92号油,为何不爆震?...
- 宝塔Linux面板的搭建
- mysql多数据表关联查询慢问题解决方案
- 机械革命无法使用U盘启动linux,机械革命u盘启动,详细教您机械革命bios怎么设置u盘启动...
- 一文读懂IaaS、PaaS、SaaS的含义及区别
- 相信积累的力量——《把时间当作朋友》读后感