五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

Python實(shí)現(xiàn)簡單的俄羅斯方塊游戲

發(fā)布日期:2022-01-01 04:15 | 文章來源:腳本之家

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

玩法:童年經(jīng)典,普通模式?jīng)]啥意思,小時候我們都是玩加速的。

源碼分享:

import os
import sys
import random
from modules import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
 
 
'''定義俄羅斯方塊游戲類'''
class TetrisGame(QMainWindow):
 def __init__(self, parent=None):
  super(TetrisGame, self).__init__(parent)
  # 是否暫停ing
  self.is_paused = False
  # 是否開始ing
  self.is_started = False
  self.initUI()
 '''界面初始化'''
 def initUI(self):
  # icon
  self.setWindowIcon(QIcon(os.path.join(os.getcwd(), 'resources/icon.jpg')))
  # 塊大小
  self.grid_size = 22
  # 游戲幀率
  self.fps = 200
  self.timer = QBasicTimer()
  # 焦點(diǎn)
  self.setFocusPolicy(Qt.StrongFocus)
  # 水平布局
  layout_horizontal = QHBoxLayout()
  self.inner_board = InnerBoard()
  self.external_board = ExternalBoard(self, self.grid_size, self.inner_board)
  layout_horizontal.addWidget(self.external_board)
  self.side_panel = SidePanel(self, self.grid_size, self.inner_board)
  layout_horizontal.addWidget(self.side_panel)
  self.status_bar = self.statusBar()
  self.external_board.score_signal[str].connect(self.status_bar.showMessage)
  self.start()
  self.center()
  self.setWindowTitle('Tetris —— 九歌')
  self.show()
  self.setFixedSize(self.external_board.width() + self.side_panel.width(), self.side_panel.height() + self.status_bar.height())
 '''游戲界面移動到屏幕中間'''
 def center(self):
  screen = QDesktopWidget().screenGeometry()
  size = self.geometry()
  self.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)
 '''更新界面'''
 def updateWindow(self):
  self.external_board.updateData()
  self.side_panel.updateData()
  self.update()
 '''開始'''
 def start(self):
  if self.is_started:
return
  self.is_started = True
  self.inner_board.createNewTetris()
  self.timer.start(self.fps, self)
 '''暫停/不暫停'''
 def pause(self):
  if not self.is_started:
return
  self.is_paused = not self.is_paused
  if self.is_paused:
self.timer.stop()
self.external_board.score_signal.emit('Paused')
  else:
self.timer.start(self.fps, self)
  self.updateWindow()
 '''計時器事件'''
 def timerEvent(self, event):
  if event.timerId() == self.timer.timerId():
removed_lines = self.inner_board.moveDown()
self.external_board.score += removed_lines
self.updateWindow()
  else:
super(TetrisGame, self).timerEvent(event)
 '''按鍵事件'''
 def keyPressEvent(self, event):
  if not self.is_started or self.inner_board.current_tetris == tetrisShape().shape_empty:
super(TetrisGame, self).keyPressEvent(event)
return
  key = event.key()
  # P鍵暫停
  if key == Qt.Key_P:
self.pause()
return
  if self.is_paused:
return
  # 向左
  elif key == Qt.Key_Left:
self.inner_board.moveLeft()
  # 向右
  elif key == Qt.Key_Right:
self.inner_board.moveRight()
  # 旋轉(zhuǎn)
  elif key == Qt.Key_Up:
self.inner_board.rotateAnticlockwise()
  # 快速墜落
  elif key == Qt.Key_Space:
self.external_board.score += self.inner_board.dropDown()
  else:
super(TetrisGame, self).keyPressEvent(event)
  self.updateWindow()
 
 
'''run'''
if __name__ == '__main__':
 app = QApplication([])
 tetris = TetrisGame()
 sys.exit(app.exec_())

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

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部