亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python pygame實現2048游戲

2020-02-15 23:45:04
字體:
來源:轉載
供稿:網友

實現2048相對來說比較簡單,用4*4的二維數組保存地圖,pygame.key.get_pressed()獲取鍵盤操作,詳見代碼。

效果圖

代碼

# -*- coding: utf-8 -*-#!/usr/bin/python'''Created on May 31, 2014@author: yuanzi'''import randomimport sysimport pygamefrom pygame.locals import * PIXEL = 150SCORE_PIXEL = 100SIZE = 4 # 地圖的類class Map:  def __init__(self, size):    self.size = size    self.score = 0    self.map = [[0 for i in range(size)] for i in range(size)]    self.add()    self.add()    # 新增2或4,有1/4概率產生4  def add(self):    while True:      p = random.randint(0, self.size * self.size - 1)      if self.map[p / self.size][p % self.size] == 0:        x = random.randint(0, 3) > 0 and 2 or 4        self.map[p / self.size][p % self.size] = x        self.score += x        break    # 地圖向左靠攏,其他方向的靠攏可以通過適當旋轉實現,返回地圖是否更新  def adjust(self):    changed = False    for a in self.map:      b = []      last = 0      for v in a:        if v != 0:          if v == last:            b.append(b.pop() << 1)            last = 0          else:            b.append(v)            last = v      b += [0] * (self.size - len(b))      for i in range(self.size):        if a[i] != b[i]:          changed = True      a[ : ] = b    return changed    # 逆時針旋轉地圖90度  def rotate90(self):    self.map = [[self.map[c][r] for c in range(self.size)] for r in reversed(range(self.size))]    # 判斷游戲結束  def over(self):    for r in range(self.size):      for c in range(self.size):        if self.map[r][c] == 0:          return False    for r in range(self.size):      for c in range(self.size - 1):        if self.map[r][c] == self.map[r][c + 1]:          return False    for r in range(self.size - 1):      for c in range(self.size):        if self.map[r][c] == self.map[r + 1][c]:          return False    return True    def moveUp(self):    self.rotate90()    if self.adjust():      self.add()    self.rotate90()    self.rotate90()    self.rotate90()    def moveRight(self):    self.rotate90()    self.rotate90()    if self.adjust():      self.add()    self.rotate90()    self.rotate90()    def moveDown(self):    self.rotate90()    self.rotate90()    self.rotate90()    if self.adjust():      self.add()    self.rotate90()    def moveLeft(self):    if self.adjust():      self.add() # 更新屏幕def show(map):  for i in range(SIZE):    for j in range(SIZE):      # 背景顏色塊      screen.blit(map.map[i][j] == 0 and block[(i + j) % 2] or block[2 + (i + j) % 2], (PIXEL * j, PIXEL * i))      # 數值顯示      if map.map[i][j] != 0:        map_text = map_font.render(str(map.map[i][j]), True, (106, 90, 205))        text_rect = map_text.get_rect()        text_rect.center = (PIXEL * j + PIXEL / 2, PIXEL * i + PIXEL / 2)        screen.blit(map_text, text_rect)  # 分數顯示  screen.blit(score_block, (0, PIXEL * SIZE))  score_text = score_font.render((map.over() and "Game over with score " or "Score: ") + str(map.score), True, (106, 90, 205))  score_rect = score_text.get_rect()  score_rect.center = (PIXEL * SIZE / 2, PIXEL * SIZE + SCORE_PIXEL / 2)  screen.blit(score_text, score_rect)  pygame.display.update() map = Map(SIZE)pygame.init()screen = pygame.display.set_mode((PIXEL * SIZE, PIXEL * SIZE + SCORE_PIXEL))pygame.display.set_caption("2048")block = [pygame.Surface((PIXEL, PIXEL)) for i in range(4)]# 設置顏色block[0].fill((152, 251, 152))block[1].fill((240, 255, 255))block[2].fill((0, 255, 127))block[3].fill((225, 255, 255))score_block = pygame.Surface((PIXEL * SIZE, SCORE_PIXEL))score_block.fill((245, 245, 245))# 設置字體map_font = pygame.font.Font(None, PIXEL * 2 / 3)score_font = pygame.font.Font(None, SCORE_PIXEL * 2 / 3)clock = pygame.time.Clock()show(map) while not map.over():  # 12為實驗參數  clock.tick(12)  for event in pygame.event.get():    if event.type == QUIT:      sys.exit()  # 接收玩家操作  pressed_keys = pygame.key.get_pressed()  if pressed_keys[K_w] or pressed_keys[K_UP]:    map.moveUp()  elif pressed_keys[K_s] or pressed_keys[K_DOWN]:    map.moveDown()  elif pressed_keys[K_a] or pressed_keys[K_LEFT]:    map.moveLeft()  elif pressed_keys[K_d] or pressed_keys[K_RIGHT]:    map.moveRight()  show(map) # 游戲結束pygame.time.delay(3000)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区丝袜| 久久久久久国产精品三级玉女聊斋| 久久久久久久久久久亚洲| 国产69精品99久久久久久宅男| 国产91精品黑色丝袜高跟鞋| 欧美激情视频在线免费观看 欧美视频免费一| 日韩资源在线观看| 亚洲美女av黄| 亚洲精品在线看| 欧美高清激情视频| 亚洲影院污污.| 国产精品自产拍在线观看中文| 成人亚洲欧美一区二区三区| 欧美性黄网官网| 亚洲国产天堂久久国产91| 91福利视频在线观看| 在线观看国产欧美| 国产婷婷成人久久av免费高清| 亚洲人成电影网| 性欧美办公室18xxxxhd| 中文精品99久久国产香蕉| 91久久精品一区| 亚洲精品短视频| www.99久久热国产日韩欧美.com| 色噜噜狠狠狠综合曰曰曰| 97精品国产aⅴ7777| 亚洲性av网站| 51ⅴ精品国产91久久久久久| 国产精品久久国产精品99gif| 亚洲精品自在久久| 51久久精品夜色国产麻豆| www.亚洲一二| 久热精品视频在线免费观看| 亚洲欧美在线磁力| 久久久久女教师免费一区| 久久久www成人免费精品张筱雨| 欧美日韩成人精品| 国产精品igao视频| 2019最新中文字幕| 日韩成人xxxx| 茄子视频成人在线| 日韩美女免费线视频| 国产极品精品在线观看| 中文字幕精品www乱入免费视频| 久久精品视频中文字幕| 精品成人国产在线观看男人呻吟| 亚洲伊人一本大道中文字幕| 中文字幕av一区二区三区谷原希美| 欧美在线激情视频| 亚洲欧美变态国产另类| 色先锋资源久久综合5566| 欧美高清视频在线播放| 亚洲美女av在线播放| 成人午夜两性视频| 亚洲国产精品人久久电影| 亚洲精品电影久久久| 成人两性免费视频| 亚洲激情视频网| 亚洲r级在线观看| 成人免费看吃奶视频网站| 日本精品久久久久影院| 青青草原成人在线视频| 一区二区三区天堂av| www.美女亚洲精品| 亚洲最大福利视频网| 欧美一区深夜视频| 久久精品中文字幕免费mv| 成人av资源在线播放| 欧美日韩一区二区免费在线观看| 国产精品久久久久久超碰| 亚洲精品国产精品国自产观看浪潮| 色妞色视频一区二区三区四区| 国产亚洲欧洲在线| 亚洲国产高清高潮精品美女| 精品视频偷偷看在线观看| 久久久精品久久久| www国产精品视频| 欧美乱妇40p| 中文字幕久久久| 亚洲男人天堂2024| 国产乱人伦真实精品视频| 亚洲女人被黑人巨大进入| 欧美性xxxx极品hd满灌| 久久久精品亚洲| 国产成人精彩在线视频九色| 九九热最新视频//这里只有精品| 国产福利精品av综合导导航| 国产欧美精品日韩精品| 色婷婷亚洲mv天堂mv在影片| 91av在线视频观看| 久久好看免费视频| 综合国产在线观看| 精品国产一区二区三区久久| 在线观看国产欧美| 国产精品普通话| 欧美一区二区三区免费视| 91精品国产99久久久久久| 国产精品久久久久久久久久免费| 成人午夜一级二级三级| 中文字幕在线看视频国产欧美| 久久精品小视频| 欧美激情精品久久久久久蜜臀| 福利一区视频在线观看| 国产成人jvid在线播放| 91成品人片a无限观看| 精品视频偷偷看在线观看| 日韩精品免费电影| 亚洲va码欧洲m码| 另类天堂视频在线观看| 久久精品国产欧美亚洲人人爽| 国产91精品久| 亚洲欧美日韩图片| 亚洲第一精品电影| 九九视频这里只有精品| 亚洲已满18点击进入在线看片| 欧美日韩色婷婷| 国产精品视频播放| 欧美黑人视频一区| 久久精品夜夜夜夜夜久久| 亚洲 日韩 国产第一| 中文字幕视频在线免费欧美日韩综合在线看| 伊人男人综合视频网| 欧美在线一级va免费观看| 欧美亚洲在线播放| 亚洲a一级视频| 欧美一区二区影院| 国产不卡av在线| 国产精品久久久久久av下载红粉| 日韩av在线免费观看| 蜜月aⅴ免费一区二区三区| 日韩电视剧免费观看网站| 国产精品久久久久久久久久三级| 精品激情国产视频| 久久久久久久久中文字幕| 美女扒开尿口让男人操亚洲视频网站| 中文字幕精品视频| 欧美日韩激情网| 91在线精品播放| 日韩精品在线观看一区二区| 日韩午夜在线视频| 欧美激情第三页| 国产91网红主播在线观看| 成人在线免费观看视视频| 国产91色在线| 国产精品成人国产乱一区| 欧美在线不卡区| 影音先锋欧美在线资源| 欧美在线国产精品| 久久久中文字幕| 欧美在线播放视频| 欧美丰满老妇厨房牲生活| 日韩av中文字幕在线免费观看| 日韩女在线观看| 欧美性猛交xxxx乱大交| 欧美激情视频在线观看| 日韩免费视频在线观看| 正在播放欧美一区| 粉嫩av一区二区三区免费野| 国产精品中文字幕在线观看| 狠狠躁天天躁日日躁欧美| 国内精品在线一区| 国产精品对白刺激| 国产在线精品成人一区二区三区| 亚洲最大成人网色|