韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > Python基础教程 > python开发俄罗斯方块小游戏代码实例

python开发俄罗斯方块小游戏代码实例

头像

2021-02-06 15:11:073884浏览 · 0收藏 · 0评论

python开发实例.png

1.操作环境

win10系统,python3.5以上系统,

2.相关模块

pyqt5模块;

以及一些Python自带的模块。

3.安装Python并添加到环境变量,pip安装需要的相关模块。

pip install -r requirements.txt

4.运行下面代码

'''


Function:

    俄罗斯方块主程序

Author:

    Charles

公众号:

    Charles的皮卡丘

'''

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
()

# 焦点

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 —— Charles的皮卡丘'
)

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
()

# 旋转

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_
())


关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

《互换人妻HD中字》| 电视剧在线观看免费| 60左右男性几天需要性一次| 小妇人在线观看免费版电视剧| 主人~我错了请把它关掉歌词| 把女人弄爽特黄A大片视频| 疯狂二人房间荷尔蒙爆发原声| 《课后2对1特别授课》女主角是.. | 欧美大片| 小蜜桃免费观看高清电视剧| 星空麻花MV高清| 日本女生校服| 闺蜜老公把我压在怀里| 成品人和精品人的区别9点| 《甜蜜惩罚2》第二季的剧情| 《厨房韵母2》动漫下线了吗| 《警花交换做爰》| 美女跳舞| 桃色| 妙手房术3真人版| おまえの母亲をだます的歌词| 黄瓜视频| 《男医生的特殊治疗》| 大雷QQ弹弹跳舞 | 妈妈你真棒里面的插曲叫什么| 《漂亮的秘书HD》在线观看| CSGO高清大片免费播放器| 蜜臀| 扌雷辶鬲的小说章节| 女士穿紧身裸体开裆光滑皮裤| 《熟妇的荡欲》免费看| 《家访的老师》动漫在线观看| 久久久久久精品免费观看黑人动漫| 《帐篷里的秘密》动漫| 黑道第一宠婚| 《课后2对1特别授课》女主角是..| 《从上司到妻子》动画结局| 宝贝今天可不可以不带小雨伞| 美国灭火宝贝3| 女人尝试到更粗大的心理变化 | 公与媳中文字幕乱码的预防方法