范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python2048小游戏

  在一本书上找到的小游戏实例,自己运行起来感觉比较有意思就发出来看看.
  其中有很多地方不是很懂,等到自己研究透彻了会更新带全部注释版本的.
  对于pygame模块还是在探索阶段,大家要有什么好的学习渠道可以在评论区留言,不胜感谢import random  import pygame import time import sys from pygame.locals import * import threading  # 多线程模块  SIZE = 4  # 2048的小格式4*4,尺寸暂定为4 LENGTH = 130  # 每个小格的边长长度 SCORE_HEIGTH = 130   # 计分区占用高度  DEFAULT = (205, 193, 180)  # 背景颜色 C_FONT = (120, 111, 102)  # 字体颜色 C_2 = (238, 228, 218) C_4 = (237, 224, 200) C_8 = (242, 177, 121) C_16 = (245, 149, 99) C_32 = (246, 94, 59) C_64 = (246, 94, 59) C_128 = (237, 207, 114) C_256 = (237, 204, 98) C_512 = (237, 200, 80) C_1024 = (237, 197, 63) C_2048 = (225, 187, 0)  """ 建立获取颜色的函数 """   def get_color(n):     n_t = 0     for i in range(1, 12):         if n >> i == 1:             n_t = i     color = [         DEFAULT,         C_2,         C_4,         C_8,         C_16,         C_32,         C_64,         C_128,         C_256,         C_512,         C_1024,         C_2048,         C_FONT]     return color[n_t]   """ 画面内容控制 """   class Map:     def __init__(self, size):         self.size = size         self.map = [[0 for i in range(size)]for i in range(size)]         self.score = 0         self.is_move = 0         self.add()         self.add()      def add(self):         while True:             pos = random.randint(0, self.size * self.size - 1)              flag = self.map[pos // self.size][pos % self.size]              if flag == 0:                 num = random.randint(0, 3)                 n = 2                 if num == 0:                     n = 4                     self.map[pos // self.size][pos % self.size] = n                     self.score += n                     break      def failed(self):         for i in self.map:             for j in i:                 if j == 0:                     return False         for i in range(0, self.size):             for j in range(0, self.size):                 if (i - 1 > 0 and self.map[i][j] == self.map[i - 1][j])                         or (j - 1 >= 0 and self.map[i][j] == self.map[i][j - 1])                         or (i + 1 < self.size and self.map[i][j] == self.map[i + 1][j])                         or (j + 1 < self.size and self.map[i][j] == self.map[i][j + 1]):                     return False         return True      def check(self, num):         for i in self.map:             for j in i:                 if j == num:                     return True         return False      def move_to_left(self):         changed = False         for a in self.map:             b = []             last = 0             for v in a:                 if v != 0:                     if v != last:                         b.append(v)                         last = v                     else:                         b.append(b.pop() * 2)                         last = 0             b += [0] * (self.size - len(b))             for i in range(0, self.size):                 if a[i] != b[i]:                     changed = True             a[:] = b         return changed      def change(self):         self.map = [[self.map[i][j]                      for i in reversed(range(self.size))]for j in range(self.size)]      def move_left(self):         if self.move_to_left():             self.is_move = 1             self.add()      def move_up(self):         self.change()         self.change()         self.change()         if self.move_to_left():             self.is_move = 1             self.add()         self.change()      def move_right(self):         self.change()         self.change()         if self.move_to_left():             self.is_move = 1             self.add()         self.change()         self.change()      def move_down(self):         self.change()         if self.move_to_left():             self.is_move = 1             self.add()         self.change()         self.change()         self.change()   """ 显示控制部分 """   def display(map, screen):     block_font = pygame.font.Font(None, 86)     score_font = pygame.font.Font(None, 86)     screen.fill(DEFAULT)     for i in range(map.size):         for j in range(map.size):             block = pygame.Surface((LENGTH, LENGTH))             block.fill(get_color(map.map[i][j]))              font_surf = block_font.render(str(map.map[i][j]), True, C_FONT)              font_rect = font_surf.get_rect()             font_rect.center = (                 j * LENGTH + LENGTH / 2,                 LENGTH * i + LENGTH / 2)              screen.blit(block, (j * LENGTH, i * LENGTH))             if map.map[i][j] != 0:                 screen.blit(font_surf, font_rect)                  score_surf = score_font.render(                     "score:" + str(map.score), True, C_FONT)                 score_rect = score_surf.get_rect()                 score_rect.center = (                     LENGTH * SIZE / 2,                     LENGTH * SIZE + SCORE_HEIGTH / 2)                 screen.blit(score_surf, score_rect)                 pygame.display.update()   # 定义主程序 def main():     pygame.init()  # 初始化界面     screen = pygame.display.set_mode(         (LENGTH * SIZE, LENGTH * SIZE + SCORE_HEIGTH))  # 屏幕尺寸设置     pygame.display.set_caption("2048小游戏")  # 设置游戏标题     clock = pygame.time.Clock()  # 用于控制帧率     map = Map(SIZE)     display(map, screen)      while not map.failed():         # 检测是否退出游戏         clock.tick(5)  # 帧率为5         for event in pygame.event.get():             if event.type == QUIT:                 pygame.quit()                 sys.exit()             elif event.type == KEYDOWN:                 keys = pygame.key.get_pressed()                 map.is_move = 0                 if keys[K_UP]:                     map.move_up()                 elif keys[K_DOWN]:                     map.move_down()                 elif keys[K_RIGHT]:                     map.move_right()                 elif keys[K_LEFT]:                     map.move_left()             elif event.type == KEYUP:                 t = threading.Thread(target=display,args=(map,screen))                 t.setDaemon(True)                 t.start()         if map.is_move==1:             if map.check(2048):                 break             time.sleep(0.01)     result="YOU LOST!!!"     if map.check(2048):         result="YOU WIN!!!"     screen.fill(DEFAULT)     map_font=pygame.font.Font(None,86)     font_surf=map_font.render(result,True,C_FONT)     font_rect=font_surf.get_rect()     font_rect.center=(SIZE*LENGTH/2,SIZE*LENGTH/2)     screen.blit(font_surf,font_rect)     pygame.display.update()   # 测试调用主程序 if __name__ == "__main__":     main()

带上蓝牙的YS3886评测蓝牙声音也可以hifi了无源系统音质非常出色,比内置功放前级只能妥协的有源音箱有更出色的声音。但通常价格昂贵,而且使用不方便,占空间。因此在推出NS16后自己一直在寻找一台价格便宜量又足的小功放,希望能在参加上海音响展(HAVE)的回顾流水账效果终于满意了(上)2021年10月15日到17日,自然声参加了2021年上海音响展。忙了三天,可把俺累坏了,痛并且快乐着,哈哈。算起来,这是自己第五次参加音响展了,但是却是唯一一次把NS17真正调满无人机AR,SpinMaster公司打造游戏新玩法视频加载中目前如果仅仅依靠设备的摄像头,很难让AR(增强现实)在内容拓展上有很大的突破,不过现在已经有一些公司尝试配合其他硬件外设来丰富AR应用的玩法,例如SpinMaster公司iPhone11很抢手,但有4个问题苹果公司在经历过去年的种种挫折后仿佛开窍般降低了新款iPhone的售价,当新iPhone性价比明显提升的同时,国内消费者也重拾对iPhone的信心。天时地利人和的情况下,iPhon苹果汽酒品牌Somersby视觉形象升级Somersby自2008年3月在丹麦售出第一瓶后,目前已畅销世界50多个国家及地区,并成为年轻人群在聚会派对和休闲娱乐时最受欢迎的高端苹果汽酒品牌之一。最近,他们公布了由Elmw合理使用空气净化设备,减少装修污染越来越多的高楼大厦崛地而起,也有越来越多的人到都市生活和工作等,也有很多人不惜花费大量积蓄去购买现代化楼宇的居室,只为在自己孤单欢乐时有一个归宿。购置新房是一件很开心的事,但面对种最高8T固态硬盘苹果发布新笔记本电脑北京时间11月13日,苹果公司正式发布了新的笔记本电脑MacBookPro,新的MacBookPro与以往的MacBookPro最大的不同就是屏幕尺寸提升到16英寸以及重新设计的键创品知识产权浅谈专利管理对企业的重要性近年来,随着智慧型企业的迅速发展,企业对专利权的保护和管理显得尤为重要。所谓专利管理,是指对专利工作加以计划组织协调和控制的活动和过程。企业对专利进行管理,是为了发挥专利在企业发展解决室内甲醛问题,了解这些并不晚新房装修老房翻修的过程中都会或多或少地受到甲醛污染,因为装修会使用到防水胶人造胶合板等,其中比较常见的有酚醛树脂胶脲醛树脂胶三聚氰胺甲醛树脂胶3种。因此,人造胶合板家具等是室内甲醛新风系统加速室内外换气,提高室内空气含氧量根据新风系统的基本工作原理来看新风系统的作用或功能究竟有哪些?不同工作原理的新风系统又是怎样实现新风交换的?在此,按照新风系统进出风口的差异,将新风系统分为单向流新风系统双向流新风家用空气净化器是什么?家用空气净化器好么?根据使用场所不同可将空气净化器分为家用空气净化器商用空气净化器学校空气净化器以及医院空气净化器等等。空气净化器是一种通过一套过滤系统净化空气的设备,其主要作用在于净化空气中的固态污
美的和格力的空调比其他的贵,它贵的理由除了牌子响亮之外,还有什么过人之处?从长远的来看,建议看一下空调的能耗,同样制冷效果,能耗指数越小越好,节电节能。美的空调,隶属于美的集团,是集家用商用空调产品开发生产服务于一体的经营平台。除顺德总部外,美的空调在广为什么有人宁愿溢价买华为,也不考虑现货有性价比的小米手机?我16年时买的水货果5,当时因为在工地上跑,水果机的通病大家都知道,电池特别不耐用!当时很努力的网上抢几次小米都没抢到,渐渐就没兴趣抢了!实体店同型号要贵五百左右。后来拿同事的小米人工肾的发展历程是怎么样的?肾病发展至终末期,肾脏失去绝大部分功能,就是我们通常说的尿毒症。目前对尿毒症患者的治疗,包括透析和肾移植治疗。但是由于肾源紧缺,能配型上并成功移植的患者少之又少透析治疗,一般每周需如果全人类团结一致,动用所有资源能造出宇宙战舰吗?可以造出什么程度的战舰?如果全人类团结一致,动用所有资源能造出宇宙战舰吗?可以造出什么程度的战舰?这是一个非常有趣的话题,人类团结一心确实能办成难以想象的工程!就如2012中人类将制造诺亚方舟的重任交给了手机发展到现在,淘汰了多少产品或者是事物?1固定电话BB机(传呼机)大哥大老式电话亭等。2手电筒3收音机4电话簿5相册数码相框过去家里几乎都有一本相册,厚厚的一沓,每当我们想回忆过去的点点滴滴的时候,就会翻看相册,借助照片太阳既然是核聚变反应,为什么不像氢弹一样瞬间炸完,而是持续不断地聚变反应?首先氢弹并没有炸完,大多数原料还来不及参与核聚变反应,反应就结束了。让我们用可控核聚变来进行解释。可控核聚变的难度,并不在于无法发生核聚变,而在于如何延长核聚变的反应时间。当从外界苹果公司正遭美国家劳资关系委员会调查路透9月3日消息,美国国家劳资关系委员会(NLRB)网站记录显示,该委员会正在调查苹果员工对该公司提起的两起诉讼。这两起诉讼分别于8月26日和9月1日提交,目前正由该机构位于加州奥为什么很多人不喜欢小米手机?小米手机在业界有时候只能说是迫不得已的一种选择,因为在同性能,同配置甚至小米还能在摄像等方面还能更加优秀一点的时候,却能以最低的价格买到手,这就是小米的优势有很多人会觉得花费这么大1926亿美元!LV老板再次打败贝佐斯成为世界首富!网友说他必须要感谢中国人中国经济周刊经济网讯(记者侯隽)6月2日,全球奢侈品巨头LVMH(路威酩轩)集团董事长老板伯纳德阿尔诺最新的身家为1926亿美元,不但创下历史新高,而且再次赶超亚马逊创始人杰夫贝佐基金在什么平台上买比较安全?几个主要可以购买基金的平台,以及各自的优缺点跟大家分享下一天天基金。优点1够大,几乎市场上所有的指数基金主动管理型基金私募,只要是公开发售愿意面向投资者募集的产品,在他家都有2PC华为商标转让成功,鸿蒙系统可以用中文名字了华为鸿蒙商标获得转让,转让人为惠州市契贝科技有限公司。如下图所示,华为42类设计研究9类科学仪器的鸿蒙相关商标已获转让,转让人为惠州市契贝科技有限公司。感觉华为应该是买的,毕竟鸿蒙