成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Python Pygame實現(xiàn)俄羅斯方塊

Python Pygame實現(xiàn)俄羅斯方塊

熱門標簽:申請辦個400電話號碼 400電話辦理費用收費 鎮(zhèn)江人工外呼系統(tǒng)供應(yīng)商 千呼ai電話機器人免費 高德地圖標注字母 騰訊地圖標注有什么版本 外呼系統(tǒng)前面有錄音播放嗎 深圳網(wǎng)絡(luò)外呼系統(tǒng)代理商 柳州正規(guī)電銷機器人收費

本文實例為大家分享了Python Pygame實現(xiàn)俄羅斯方塊的具體代碼,供大家參考,具體內(nèi)容如下

源碼:

# coding : utf-8

#: pip install pygame
import random
import sys
import pygame

#: 顏色定義
COLOR_WHITE = (255, 255, 255)
COLOR_BLACK = (0, 0, 0)

class Block:
 """小塊"""
 width = 24
 height = 24

 @staticmethod
 def draw(s, left, top, color, bg_color):
  pygame.draw.rect(s, bg_color, pygame.Rect(left, top, Block.width, Block.height))
  pygame.draw.rect(s, color, pygame.Rect(left, top, Block.width - 1, Block.height - 1))


class Building:
 """積木"""

 def __init__(self):
  """
  方塊的7種基本形狀
  每次初始化隨機選擇一個形狀
  @:return True / False
  """
  self.form = random.choice(
   [
    [
     [0, 0, 0, 0, 0],
     [0, 0, 1, 0, 0],
     [0, 1, 1, 1, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0]
    ],
    [
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [1, 1, 1, 1, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0]
    ],
    [
     [0, 0, 0, 0, 0],
     [0, 1, 1, 0, 0],
     [0, 0, 1, 1, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0]
    ],
    [
     [0, 0, 0, 0, 0],
     [0, 0, 1, 1, 0],
     [0, 1, 1, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0]
    ],
    [
     [0, 0, 0, 0, 0],
     [0, 1, 1, 0, 0],
     [0, 0, 1, 0, 0],
     [0, 0, 1, 0, 0],
     [0, 0, 0, 0, 0]
    ],
    [
     [0, 0, 0, 0, 0],
     [0, 0, 1, 1, 0],
     [0, 0, 1, 0, 0],
     [0, 0, 1, 0, 0],
     [0, 0, 0, 0, 0]
    ],
    [
     [0, 0, 0, 0, 0],
     [0, 1, 1, 0, 0],
     [0, 1, 1, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0]
    ]
   ])

 def __getitem__(self, pos):
  return self.form[pos]

 def __setitem__(self, key, value):
  self.form[key] = value


class Layout:
 """棋盤"""

 def __init__(self):
  self.block_x_count = 16;
  self.block_y_count = 22;
  self.layout = [[0 if 1  i  self.block_x_count - 2 and j  self.block_y_count - 2 else 1
      for i in range(self.block_x_count)] for j in range(self.block_y_count)]

 @property
 def size(self):
  """返回棋盤屏幕大小(width,height)"""
  return (self.block_x_count * Block.width, self.block_y_count * Block.height)

 def create_new_building(self):
  """
  創(chuàng)建新的積木,初始化位置為第5,0格, 速度為4
  :return: 返回是否無空間創(chuàng)建了
  """
  self.building = Building()
  self.building_left, self.building_top = 5, 0 #
  self.drop_speed = 3
  print(self.test_building_touch_wall())
  return self.test_building_touch_wall()
 
 @property
 def speed(self):
  return self.drop_speed

 def test_building_touch_wall(self, x_offset=0, y_offset=0):
  """
  積木是否已經(jīng)觸底/墻壁
  具體操作:
  判斷積木最后一排的1,是否在當(dāng)前棋牌對應(yīng)的位置是也是1
  @:param x_offset: x的偏移量 移動時可以傳入1/-1來判斷
  @:param y_offset: y的偏移量 正常下落時可以傳入1來判斷
  """
  for i in range(4, -1, -1):
   for j in range(5):
    if self.building[i][j]:
     if self.layout[i + self.building_top + y_offset][j + self.building_left + x_offset]:
      return True
  return False

 def move_left_right(self, x):
  """
  左右移動
  @:param x: 移動量 x_offset
  """
  #: 移動時不能撞墻
  if not self.test_building_touch_wall(x_offset=x):
   self.building_left += x

 def down_build(self):
  """ 盒子的自動下移 """
  self.building_top += 1

 def direct_down(self):
  """ 手動快速降落 """
  self.drop_speed = 50

 def convert_building(self):
  """
  * 扭轉(zhuǎn)盒子的總方位 (右轉(zhuǎn))
  具體操作:
  把第一豎排的倒序給第一橫排的
  把第二豎排的倒序給第二橫排的
  后面同理.
  """
  new_box = [[0 for i in range(5)] for j in range(5)]
  for i in range(5):
   for j in range(4, -1, -1):
    new_box[i][j] = self.building[4 - j][i]
  self.building = new_box

 def clear_full_lines(self):
  """消除滿行的所有行"""
  new_layout = [[0 if 1  i  self.block_x_count - 2 and j  self.block_y_count - 2 else 1
      for i in range(self.block_x_count)] for j in range(self.block_y_count)]

  row_len = self.block_x_count - 4
  new_row = self.block_y_count - 2 - 1
  for cur_row in range(self.block_y_count - 2 - 1, 0, -1):
   if sum(self.layout[cur_row][2:self.block_x_count - 2])  row_len:
    new_layout[new_row] = self.layout[cur_row]
    new_row -= 1
  self.layout = new_layout

 def put_building_to_layout(self):
  """將積木放到棋盤里"""
  for i in range(4, -1, -1):
   for j in range(5):
    if self.building[i][j]:
     self.layout[i + self.building_top][j + self.building_left] = 1
  #: 這里會調(diào)用消除函數(shù)
  self.clear_full_lines()

 def draw_building(self, s):
  """
  顯示積木
  @:param s : pygame = screen 
  """
  cur_left, cur_top = self.building_left * Block.width, self.building_top * Block.height
  for i in range(5):
   for j in range(5):
    # 只畫積木實體,不管盒子本身
    if self.building[j][i]:
     Block.draw(s, cur_left + i * Block.width, cur_top + j * Block.height, COLOR_BLACK, COLOR_WHITE)

 def draw(self, s):
  """
  顯示棋盤
  @:param s : pygame = screen 
  """
  for i in range(self.block_x_count):
   for j in range(self.block_y_count):
    if self.layout[j][i] == 0:
     Block.draw(s, i * Block.width, j * Block.height, COLOR_WHITE, COLOR_BLACK)
    else:
     Block.draw(s, i * Block.width, j * Block.height, COLOR_BLACK, COLOR_WHITE)


# -------------------------------------------------------------------
# Main
# -------------------------------------------------------------------
def main():
 #: 初始化
 while True:
  layout = Layout()
  layout.create_new_building()
  pygame.init()
  pygame.display.set_caption('俄羅斯方塊')
  screen = pygame.display.set_mode((layout.size), 0, 32)
  is_over = False
  #: 單局游戲循環(huán)開始 [結(jié)束后直接重新開始]
  while not is_over:
   #: 處理游戲消息
   for e in pygame.event.get():
    if e.type == pygame.QUIT:
     sys.exit()
    #: 處理按鍵
    if e.type == pygame.KEYDOWN:
     if e.key == pygame.K_UP:
      layout.convert_building()
     if e.key == pygame.K_DOWN:
      layout.direct_down()
     if e.key == pygame.K_LEFT:
      layout.move_left_right(-1)
     if e.key == pygame.K_RIGHT:
      layout.move_left_right(1)
   #: 是否碰觸底部地面了,是 -> 融合背景 否 -> 繼續(xù)下落
   if layout.test_building_touch_wall(y_offset=1):
    layout.put_building_to_layout()
    is_over = layout.create_new_building()
   else:
    layout.down_build()
   #: 繪制
   layout.draw(screen)
   layout.draw_building(screen)
   pygame.display.update()
   #: 速度
   pygame.time.Clock().tick(layout.speed)


if __name__ == '__main__':
 main()

效果:

更多俄羅斯方塊精彩文章請點擊專題:俄羅斯方塊游戲集合 進行學(xué)習(xí)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • python 基于pygame實現(xiàn)俄羅斯方塊
  • Python控制臺輸出俄羅斯方塊的方法實例
  • Python控制臺輸出俄羅斯方塊移動和旋轉(zhuǎn)功能
  • python如何寫個俄羅斯方塊
  • python游戲?qū)崙?zhàn)項目之俄羅斯方塊的魅力

標簽:烏蘭察布 合肥 烏蘭察布 大慶 海南 郴州 平頂山 哈爾濱

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Python Pygame實現(xiàn)俄羅斯方塊》,本文關(guān)鍵詞  Python,Pygame,實現(xiàn),俄羅斯,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python Pygame實現(xiàn)俄羅斯方塊》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python Pygame實現(xiàn)俄羅斯方塊的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    制服国产精品| 伦xxxx在线| 日韩成人精品视频| 亚洲中午字幕| 国产三级三级三级精品8ⅰ区| av在线播放一区二区三区| 伊人中文在线| 国产成人一级片| 国产亚洲精品久久久久久青梅| 日韩午夜电影免费看| 欧美日韩中文字幕一区二区三区| 另类图片第一页| 亚洲自拍偷拍色图| 国产日产精品_国产精品毛片| 日韩成人三级视频| 草民午夜欧美限制a级福利片| 久久99久久98精品免观看软件| 国产三级精品三级在线专区| 亚洲精品777| 国产欧美日韩一级| a视频v在线| 国产精品一区二区精品视频观看| 亚洲欧美日韩精品久久| 二级片在线观看| 中文字幕综合在线| 国产69精品久久久久9999小说| 亚洲欧美经典视频| 91探花福利精品国产自产在线| 韩国欧美国产1区| 一区二区三区中文| 欧美精品少妇一区二区三区| 国产一区二区看久久| 影音先锋中文字幕在线视频| 国产黄色91视频| 国产同性人妖ts口直男| 丁香花五月激情| 麻豆映画在线观看| 青青草久久伊人| 西西午夜视频| 精品免费av| 污污污www精品国产网站| 亚洲精品在线观看视频| 精品日韩欧美一区二区| 2018中文字幕在线| 日韩视频中文| 国产日本亚洲| 中出福利视频| 亚洲尤物在线视频观看| 天堂99x99es久久精品免费| 樱桃视频免费看| 黑人极品ⅴideos精品欧美棵| 在线看一级片| 欧美国产乱视频| 五月婷中文字幕| 国产精品免费网站在线观看| 尤物视频在线观看国产| 极品尤物一区二区| 成人国产激情在线| 日本成熟性欧美| 色狠狠综合天天综合综合| 亚洲日本韩国一区| 欧美精品一区二区不卡| 人妻 日韩精品 中文字幕| 毛片视频网站在线观看| 精品视频一区二区不卡| 激情婷婷久久| 自由日本语热亚洲人| 精品国产一区二区三区免费| 国产在线视频一区二区| 精品国产乱码久久久久久蜜坠欲下| 91在线导航| 欧美国产视频一区| 在线看片福利| 99久久国产综合色|国产精品| 制服丝袜第一页在线观看| 亚洲一级免费在线观看| 亚洲色图自拍| 国产无遮挡在线观看| 久久精品2019中文字幕| 欧美fxxxxxx另类| 亚洲精品一区二区三区婷婷月| 性少妇xx生活| 国产乱了高清露脸对白| 国产成人免费看一级大黄| 亚洲精品在线观看www| 轻轻操 在线观看| 午夜精彩视频在线观看不卡| 99精品黄色片免费大全| 99久久久无码国产精品不卡| 成人黄色免费短视频| 99国产盗摄| 亚洲一级在线| 精品久久久国产精品999| 国产黄色免费在线观看| 国产一区二区三区在线视频观看| 秋霞午夜电影| 欧美熟妇交换久久久久久分类| 探花视频在线观看| 岛国在线视频免费看| 国产黄色网址在线观看| 国产一二区视频| 麻豆一区产品精品蜜桃的特点| 日韩高清不卡| 国产高清在线精品一区二区三区| 欧美调教网站| 精品无吗乱吗av国产爱色| 在线免费电影观看| 综合毛片免费视频| 成全电影播放在线观看国语| 在线观看视频一区二区欧美日韩| 日本一级理论片在线大全| 免费三片60分钟| 欧美精品一区二区三区中文字幕| 自拍视频一区二区| 污污污污污污www网站免费| 久本草在线中文字幕亚洲欧美| 最新在线中文字幕| 国产精品直播网红| 国产高清一区二区| 欧美大片国产精品| 欧美极品中文字幕| 黄色在线网站噜噜噜| 欧美一区激情视频在线观看| 2022国产麻豆剧果冻传媒剧情| 韩国av在线播放| 欧美午夜小视频| 久久久久久久福利| 熟妇高潮精品一区二区三区| 女明星视频黄又免费| 9191国语精品高清在线| 日韩欧美在线视频免费观看| 欧美在线视频你懂得| 99久久99久久精品国产| 久久综合网hezyo| 香蕉视频在线网站| 日韩乱码人妻无码中文字幕| 久久精品久久精品亚洲人| 激情懂色av一区av二区av| 深夜爽爽视频| 国产在线不卡精品| 亚洲天堂2017| 欧美一区二区性| 日韩va亚洲va欧美va清高| 午夜cr在线观看高清在线视频完整版| 国产精品久久999| 欧美人与性动交α欧美精品图片| 天堂av免费在线观看| 日韩av在线发布| 中文字幕在线观看高清| 人人狠狠综合久久亚洲| 久久亚洲色图| 亚洲黄网站黄| 99热在线精品观看| 一区二区久久精品| av色男福利网| 亚洲午夜电影网| 欧美性xxxx极品hd满灌| 成年丰满熟妇午夜免费视频| 欧美日韩国产v| 欧美三级电影精品| 亚洲色图校园春色| 亚洲私人影院在线观看| 精产国品自在线www| 亚洲剧情一区二区| 亚洲另类欧美日韩| 亚洲欧美日韩第一页| 亚洲成年人在线观看| a视频在线观看| 麻豆影视在线观看| 在线免费一区二区| 波多野结衣av在线| 欧美色欧美亚洲另类二区精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 在线不卡免费视频| 欧美激情aaa| a视频在线看| 91老司机在线| 一级片视频播放| 17videosex性欧美| 欧美精品一线| 亚洲色成人一区二区三区小说| 国产视频久久久久久久| 高清在线不卡av| www.日韩在线观看| 国产韩国精品一区二区三区| 成年人福利网站| 亚洲欧美一区二区三区孕妇| 韩国三级hd两男一女| 欧美一区二区免费观在线| 男人的天堂av社区在线| 国产成人精品视频在线| 欧美在线观看你懂的| 狠狠网亚洲精品| 亚洲精品乱码久久久久久蜜桃图片| 香港三级韩国三级日本三级| 午夜伦理精品一区| 国产成人鲁色资源国产91色综| 色域天天综合网| 亚洲四虎影院| 一级做a爱视频| 韩国三级电影在线观看婷婷| 蜜桃91精品入口| 极品少妇xxxx精品少妇| 一区二区黄色| 午夜爽爽爽男女免费观看| 国产精品久久久久久久天堂第1集| 亚洲一区尤物| 久久久另类综合| 欧美丰满熟妇xxxxx| 色网视频在线| av鲁丝一区鲁丝二区鲁丝三区| 久久综合九色综合久99| 九色精品美女在线| 丰满少妇一区二区三区| 国模私拍视频一区| 色乱码一区二区三区网站| 亚洲高清免费| 成人3d精品动漫精品一二三| 亚洲一区二区三区四区| 自拍偷拍亚洲欧美日韩| 日韩免费成人av| 日韩色图在线观看| 国产自产女人91一区在线观看| 亚洲少妇中文在线| 国产欧美一区二区精品久导航| 国产伦精品一区二区三区视频金莲| 宅男在线国产精品| av成人影院在线| 久久中文字幕无码| 欧美日韩亚洲免费| 精品在线视频免费观看| 青青草av免费在线观看| 欧美精品一区二区三区一线天视频| 91在线免费观看网站| 好吊色欧美一区二区三区| 粉嫩一区二区三区在线看| 久草网视频在线观看| 26uuu另类亚洲欧美日本老年| www.久久久久久久久久久| 中文字幕精品在线播放| 国产精品美女一区二区三区| 中文字幕av高清| 91午夜视频在线观看| 中文字幕av第一页| 欧美精品日日鲁夜夜添| 国精产品一区二区三区有限公司| av网址观看| 新天天拍日日拍狠狠拍| 欧美精品总汇| 男男受被啪到高潮自述| 国产精品久久久久久在线| 黄页网站在线播放| 日韩欧美亚洲一二三区| 久久久在线免费观看| 亚洲毛片在线播放| 蜜桃久久影院| 国产娇喘精品一区二区三区图片| 美女视频网站在线观看| 免费看的黄色录像| 性做久久久久久久免费看| 手机在线理论片| 97精品国产97久久久久久免费| 日批视频在线免费看| 亚洲精品免费在线| 97在线播放免费观看| 国产这里有精品| 亚洲成色www8888| 亚洲一区二区欧美| 精品国产一区二区三区久久久蜜月| 午夜免费看视频| 国产在线色视频| 亚洲第一精品区| 久久夜色精品国产噜噜av| 青娱乐精品在线视频| 国产精品人人爱一区二区白浆| 日韩av免费在线观看| 国产成人综合在线播放| avav免费在线观看| 欧美性xxxxx极品娇小| 狠狠激情五月综合婷婷俺| 欧美最近摘花xxxx摘花| 中文字幕人成人乱码亚洲电影| 欧美黄色一区| 美女视频免费观看网站在线| 亚洲一区二区三区网站| 国产日韩欧美中文在线播放| 香蕉视频911| 欧美xxxx做受欧美护士| 亚洲天堂av老司机| 综合 欧美 亚洲日本| 国产农村妇女精品一区| 国产一卡2卡3卡免费网站| 91偷拍精品一区二区三区| 91caopron| 成人国产精品免费观看动漫| 久久在线精品视频| 神马久久久久久久久久久| 欧美精品国产精品日韩精品| 亚洲国产欧美一区二区三区久久| 91福利小视频| 国产精品久久久av| 国产无遮挡又黄又爽在线观看| 999国产精品| 亚洲成人久久影院| 福利片在线播放| 99r国产精品| 女人被男人躁得好爽免费视频| 久久精品无码专区| 日日碰狠狠添天天爽超碰97| 国产精品片aa在线观看| 久久国产欧美日韩精品| 黄色国产精品视频| jizzjizz中国精品麻豆| 亚洲人在线播放| 午夜伦理在线视频| 日韩欧美国产免费播放| 特大巨黑人吊性xxxxn38| 一区二区在线观看视频在线观看| 黄网站app在线观看下载视频大全官网| 最近中文字幕mv免费高清电影| 最新国产精品精品视频| 淫行教师动漫| 国产日韩欧美亚洲| 亚洲成人av在线| 一级毛片高清视频| 日本tube24xxxxx| 久久老司机精品视频| 日韩视频免费在线观看|