Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Administrator
/
pygame_lesson12_diy01
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
15277721
authored
Apr 24, 2021
by
BellCodeEditor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
auto save
parent
86df097b
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
256 additions
and
57 deletions
demo.py
周日16点.py
补课.py
补课1.py
demo.py
0 → 100644
View file @
15277721
周日16点.py
View file @
15277721
impor
t
pygame
impor
t
pygame
...
@@ -65,6 +65,7 @@ for i in range(25):
...
@@ -65,6 +65,7 @@ for i in range(25):
num_list
.
append
([
0
]
*
15
)
num_list
.
append
([
0
]
*
15
)
gameover
=
False
gameover
=
False
while
True
:
while
True
:
for
event
in
pygame
.
event
.
get
():
for
event
in
pygame
.
event
.
get
():
if
event
.
type
==
locals
.
QUIT
:
if
event
.
type
==
locals
.
QUIT
:
exit
()
exit
()
...
@@ -77,16 +78,15 @@ while True:
...
@@ -77,16 +78,15 @@ while True:
center
[
1
]
=
center
[
1
]
+
1
# 右移1列
center
[
1
]
=
center
[
1
]
+
1
# 右移1列
elif
event
.
key
==
locals
.
K_RIGHT
:
# 向右
elif
event
.
key
==
locals
.
K_RIGHT
:
# 向右
center
[
1
]
=
center
[
1
]
+
1
center
[
1
]
=
center
[
1
]
+
1
if
check
(
center
)
==
False
:
if
check
(
center
)
==
False
:
center
[
1
]
=
center
[
1
]
-
1
center
[
1
]
=
center
[
1
]
-
1
elif
event
.
key
==
locals
.
K_DOWN
:
# 向下
elif
event
.
key
==
locals
.
K_DOWN
:
# 向下
center
[
0
]
+=
3
center
[
0
]
=
center
[
0
]
+
1
if
check
(
center
)
==
False
:
if
check
(
center
)
==
False
:
center
[
0
]
=
center
[
0
]
-
1
center
[
0
]
=
center
[
0
]
-
3
elif
event
.
key
==
locals
.
K_a
:
elif
event
.
key
==
locals
.
K_a
:
color
=
(
205
,
127
,
50
)
color
=
(
205
,
127
,
50
)
...
@@ -99,7 +99,7 @@ while True:
...
@@ -99,7 +99,7 @@ while True:
if
check
(
center
)
==
False
:
if
check
(
center
)
==
False
:
index
=
old_index
index
=
old_index
current_shape
=
shape
[
index
]
current_shape
=
shape
[
index
]
if
gameover
==
False
:
if
gameover
==
False
:
if
states
==
False
:
if
states
==
False
:
...
@@ -109,7 +109,7 @@ while True:
...
@@ -109,7 +109,7 @@ while True:
index
=
random
.
randint
(
0
,
len
(
shape
)
-
1
)
# 随机形状索引
index
=
random
.
randint
(
0
,
len
(
shape
)
-
1
)
# 随机形状索引
current_shape
=
shape
[
index
]
current_shape
=
shape
[
index
]
color
=
random
.
choice
(
cube_colors
)
# 随机选取一种颜色
color
=
random
.
choice
(
cube_colors
)
# 随机选取一种颜色
count
+=
1
count
+=
3
if
count
%
FPS
==
0
:
# 降落速度的算式
if
count
%
FPS
==
0
:
# 降落速度的算式
center
[
0
]
=
center
[
0
]
+
1
center
[
0
]
=
center
[
0
]
+
1
if
check
(
center
)
==
False
:
if
check
(
center
)
==
False
:
...
...
补课.py
View file @
15277721
impor
t
pygame
impor
t
pygame
...
@@ -37,27 +37,35 @@ L = [[(-1, 0), (0, 0), (1, 0), (1, 1)],
...
@@ -37,27 +37,35 @@ L = [[(-1, 0), (0, 0), (1, 0), (1, 1)],
shape_list
=
[
I
,
J
,
L
,
O
,
S
,
T
,
Z
]
shape_list
=
[
I
,
J
,
L
,
O
,
S
,
T
,
Z
]
cube_colors
=
[
cube_colors
=
[
(
204
,
153
,
153
),
(
102
,
102
,
153
),
(
153
,
0
,
102
),
(
204
,
153
,
153
),
(
102
,
102
,
153
),
(
153
,
0
,
102
),
(
255
,
204
,
0
),
(
204
,
0
,
51
),(
255
,
0
,
51
),
(
0
,
102
,
153
),
(
255
,
204
,
0
),
(
204
,
0
,
51
),
(
255
,
0
,
51
),
(
0
,
102
,
153
),
(
153
,
0
,
51
),
(
204
,
255
,
102
),
(
255
,
153
,
0
)]
(
153
,
0
,
51
),
(
204
,
255
,
102
),
(
255
,
153
,
0
)]
center
=
[
2
,
8
]
center
=
[
2
,
8
]
shape
=
random
.
choice
(
shape_list
)
shape
=
random
.
choice
(
shape_list
)
index
=
random
.
randint
(
0
,
len
(
shape
)
-
1
)
index
=
random
.
randint
(
0
,
len
(
shape
)
-
1
)
current_shape
=
shape
[
index
]
current_shape
=
shape
[
index
]
color
=
random
.
choice
(
cube_colors
)
color
=
random
.
choice
(
cube_colors
)
def
check
(
center
):
def
check
(
center
):
for
cube
in
current_shape
:
for
cube
in
current_shape
:
cube
=
(
cube
[
0
]
+
center
[
0
],
cube
[
1
]
+
center
[
1
])
cube
=
(
cube
[
0
]
+
center
[
0
],
cube
[
1
]
+
center
[
1
])
if
cube
[
0
]
<
1
or
cube
[
1
]
<
1
or
cube
[
0
]
>
25
or
cube
[
1
]
>
15
:
if
cube
[
0
]
<
1
or
cube
[
1
]
<
1
or
cube
[
0
]
>
25
or
cube
[
1
]
>
15
:
return
False
return
False
if
num_list
[
cube
[
0
]
-
1
][
cube
[
1
]
-
1
]
!=
0
:
return
False
states
=
False
states
=
False
count
=
0
count
=
0
num_list
=
[]
for
i
in
range
(
25
):
num_list
.
append
([
0
]
*
15
)
gameover
=
False
while
True
:
while
True
:
for
event
in
pygame
.
event
.
get
():
for
event
in
pygame
.
event
.
get
():
if
event
.
type
==
locals
.
QUIT
:
if
event
.
type
==
locals
.
QUIT
:
...
@@ -65,12 +73,12 @@ while True:
...
@@ -65,12 +73,12 @@ while True:
if
event
.
type
==
locals
.
KEYDOWN
:
if
event
.
type
==
locals
.
KEYDOWN
:
if
event
.
key
==
locals
.
K_RIGHT
:
if
event
.
key
==
locals
.
K_RIGHT
:
center
[
1
]
+=
1
center
[
1
]
+=
1
if
check
(
center
)
==
False
:
if
check
(
center
)
==
False
:
center
[
1
]
-=
1
center
[
1
]
-=
1
elif
event
.
key
==
locals
.
K_LEFT
:
elif
event
.
key
==
locals
.
K_LEFT
:
center
[
1
]
-=
1
center
[
1
]
-=
1
if
check
(
center
)
==
False
:
if
check
(
center
)
==
False
:
center
[
1
]
+=
1
center
[
1
]
+=
1
elif
event
.
key
==
locals
.
K_UP
:
elif
event
.
key
==
locals
.
K_UP
:
old_index
=
index
old_index
=
index
index
+=
1
index
+=
1
...
@@ -80,43 +88,67 @@ while True:
...
@@ -80,43 +88,67 @@ while True:
if
check
(
center
)
==
False
:
if
check
(
center
)
==
False
:
index
=
old_index
index
=
old_index
current_shape
=
shape
[
index
]
current_shape
=
shape
[
index
]
if
states
==
False
:
if
gameover
==
False
:
states
=
True
if
states
==
False
:
states
=
True
center
=
[
2
,
8
]
center
=
[
2
,
8
]
shape
=
random
.
choice
(
shape_list
)
shape
=
random
.
choice
(
shape_list
)
index
=
random
.
randint
(
0
,
len
(
shape
)
-
1
)
index
=
random
.
randint
(
0
,
len
(
shape
)
-
1
)
current_shape
=
shape
[
index
]
current_shape
=
shape
[
index
]
color
=
random
.
choice
(
cube_colors
)
color
=
random
.
choice
(
cube_colors
)
count
+=
3
count
+=
3
if
count
%
FPS
==
0
:
if
count
%
FPS
==
0
:
center
[
0
]
+=
1
center
[
0
]
+=
1
if
check
(
center
)
==
False
:
if
check
(
center
)
==
False
:
center
[
0
]
-=
1
center
[
0
]
-=
1
states
=
False
states
=
False
for
cube
in
current_pos
:
num_list
[
cube
[
0
]
-
1
][
cube
[
1
]
-
1
]
=
color
screen
.
blit
(
background
,
(
0
,
0
))
screen
.
blit
(
background
,
(
0
,
0
))
current_pos
=
[]
for
cube
in
current_shape
:
current_pos
=
[]
pos
=
(
cube
[
0
]
+
center
[
0
],
cube
[
1
]
+
center
[
1
])
for
cube
in
current_shape
:
current_pos
.
append
(
pos
)
pos
=
(
cube
[
0
]
+
center
[
0
],
cube
[
1
]
+
center
[
1
])
current_pos
.
append
(
pos
)
for
cube
in
current_pos
:
pygame
.
draw
.
rect
(
screen
,
color
,
for
cube
in
current_pos
:
(
cube
[
1
]
*
20
-
20
,
cube
[
0
]
*
20
-
20
,
20
,
20
),
0
)
pygame
.
draw
.
rect
(
screen
,
color
,
pygame
.
draw
.
rect
(
screen
,
(
255
,
255
,
255
),
(
cube
[
1
]
*
20
-
20
,
cube
[
0
]
*
20
-
20
,
20
,
20
),
0
)
(
cube
[
1
]
*
20
-
20
,
cube
[
0
]
*
20
-
20
,
20
,
20
),
1
)
pygame
.
draw
.
rect
(
screen
,
(
255
,
255
,
255
),
(
cube
[
1
]
*
20
-
20
,
cube
[
0
]
*
20
-
20
,
20
,
20
),
1
)
# 画出降落小方块
for
i
,
row
in
zip
(
range
(
1
,
26
),
num_list
):
for
j
,
colors
in
zip
(
range
(
1
,
16
),
row
):
if
colors
!=
0
:
pygame
.
draw
.
rect
(
screen
,
colors
,
(
j
*
20
-
20
,
i
*
20
-
20
,
20
,
20
),
0
)
pygame
.
draw
.
rect
(
screen
,
(
255
,
255
,
255
),
(
j
*
20
-
20
,
i
*
20
-
20
,
20
,
20
),
1
)
new_list
=
[]
for
i
in
range
(
25
):
new_list
.
append
([
0
]
*
15
)
row_index
=
24
for
i
in
range
(
24
,
-
1
,
-
1
):
is_full
=
True
for
j
in
range
(
15
):
if
num_list
[
i
][
j
]
==
0
:
is_full
=
False
if
is_full
==
False
:
new_list
[
row_index
]
=
num_list
[
i
]
row_index
-=
1
else
:
score
+=
1
num_list
=
new_list
#小方块超出高度
if
num_list
[
1
][
7
]
!=
0
:
gameover
=
True
text_surface
=
font
.
render
(
str
(
score
),
True
,
(
0
,
0
,
0
))
text_surface
=
font
.
render
(
str
(
score
),
True
,
(
0
,
0
,
0
))
screen
.
blit
(
text_surface
,
(
350
,
70
))
screen
.
blit
(
text_surface
,
(
350
,
70
))
pygame
.
display
.
update
()
pygame
.
display
.
update
()
clock
.
tick
(
FPS
)
clock
.
tick
(
FPS
)
补课1.py
0 → 100644
View file @
15277721
import
pygame
import
pygame
from
pygame
import
locals
import
random
pygame
.
init
()
score
=
0
grid_size
=
20
grid_num_width
=
15
grid_num_height
=
25
FPS
=
30
screen
=
pygame
.
display
.
set_mode
((
460
,
500
))
pygame
.
display
.
set_caption
(
"俄罗斯方块"
)
clock
=
pygame
.
time
.
Clock
()
background
=
pygame
.
image
.
load
(
'bg.png'
)
font
=
pygame
.
font
.
Font
(
'STKAITI.TTF'
,
60
)
font1
=
pygame
.
font
.
Font
(
'STKAITI.TTF'
,
20
)
O
=
[[(
0
,
0
),
(
0
,
1
),
(
1
,
0
),
(
1
,
1
)]]
I
=
[[(
0
,
-
1
),
(
0
,
0
),
(
0
,
1
),
(
0
,
2
)],
[(
-
1
,
0
),
(
0
,
0
),
(
1
,
0
),
(
2
,
0
)]]
Z
=
[[(
0
,
-
1
),
(
0
,
0
),
(
1
,
0
),
(
1
,
1
)],
[(
-
1
,
0
),
(
0
,
0
),
(
0
,
-
1
),
(
1
,
-
1
)]]
S
=
[[(
-
1
,
0
),
(
0
,
0
),
(
0
,
1
),
(
1
,
1
)],
[(
1
,
-
1
),
(
1
,
0
),
(
0
,
0
),
(
0
,
1
)]]
T
=
[[(
0
,
-
1
),
(
0
,
0
),
(
0
,
1
),
(
-
1
,
0
)],
[(
-
1
,
0
),
(
0
,
0
),
(
1
,
0
),
(
0
,
1
)],
[(
0
,
-
1
),
(
0
,
0
),
(
0
,
1
),
(
1
,
0
)],
[(
-
1
,
0
),
(
0
,
0
),
(
1
,
0
),
(
0
,
-
1
)]]
J
=
[[(
-
1
,
0
),
(
0
,
0
),
(
1
,
0
),
(
1
,
-
1
)],
[(
0
,
-
1
),
(
0
,
0
),
(
0
,
1
),
(
-
1
,
-
1
)],
[(
-
1
,
0
),
(
0
,
0
),
(
1
,
0
),
(
-
1
,
1
)],
[(
0
,
-
1
),
(
0
,
0
),
(
0
,
1
),
(
1
,
1
)]]
L
=
[[(
-
1
,
0
),
(
0
,
0
),
(
1
,
0
),
(
1
,
1
)],
[(
0
,
-
1
),
(
0
,
0
),
(
0
,
1
),
(
1
,
-
1
)],
[(
-
1
,
0
),
(
0
,
0
),
(
1
,
0
),
(
-
1
,
-
1
)],
[(
0
,
-
1
),
(
0
,
0
),
(
0
,
1
),
(
-
1
,
1
)]]
shape_list
=
[
I
,
J
,
L
,
O
,
S
,
T
,
Z
]
cube_colors
=
[
(
204
,
153
,
153
),
(
102
,
102
,
153
),
(
153
,
0
,
102
),
(
255
,
204
,
0
),
(
204
,
0
,
51
),
(
255
,
0
,
51
),
(
0
,
102
,
153
),
(
153
,
0
,
51
),
(
204
,
255
,
102
),
(
255
,
153
,
0
)]
center
=
[
2
,
8
]
shape
=
random
.
choice
(
shape_list
)
index
=
random
.
randint
(
0
,
len
(
shape
)
-
1
)
current_shape
=
shape
[
index
]
color
=
random
.
choice
(
cube_colors
)
def
check
(
center
):
for
cube
in
current_shape
:
cube
=
(
cube
[
0
]
+
center
[
0
],
cube
[
1
]
+
center
[
1
])
if
cube
[
0
]
<
1
or
cube
[
1
]
<
1
or
cube
[
0
]
>
25
or
cube
[
1
]
>
15
:
return
False
if
num_list
[
cube
[
0
]
-
1
][
cube
[
1
]
-
1
]
!=
0
:
return
False
states
=
False
count
=
0
num_list
=
[]
for
i
in
range
(
25
):
num_list
.
append
([
0
]
*
15
)
gameover
=
False
while
True
:
for
event
in
pygame
.
event
.
get
():
if
event
.
type
==
locals
.
QUIT
:
exit
()
if
event
.
type
==
locals
.
KEYDOWN
:
if
gameover
==
True
:
gameover
=
False
if
event
.
key
==
locals
.
K_RIGHT
:
center
[
1
]
+=
1
if
check
(
center
)
==
False
:
center
[
1
]
-=
1
elif
event
.
key
==
locals
.
K_LEFT
:
center
[
1
]
-=
1
if
check
(
center
)
==
False
:
center
[
1
]
+=
1
elif
event
.
key
==
locals
.
K_DOWN
:
center
[
0
]
+=
1
if
check
(
center
)
==
False
:
center
[
0
]
-=
1
elif
event
.
key
==
locals
.
K_UP
:
old_index
=
index
index
+=
1
if
index
>=
len
(
shape
):
index
=
0
current_shape
=
shape
[
index
]
if
check
(
center
)
==
False
:
index
=
old_index
current_shape
=
shape
[
index
]
if
gameover
==
False
:
if
states
==
False
:
states
=
True
center
=
[
2
,
8
]
shape
=
random
.
choice
(
shape_list
)
index
=
random
.
randint
(
0
,
len
(
shape
)
-
1
)
current_shape
=
shape
[
index
]
color
=
random
.
choice
(
cube_colors
)
count
+=
3
if
count
%
FPS
==
0
:
center
[
0
]
+=
1
if
check
(
center
)
==
False
:
center
[
0
]
-=
1
states
=
False
for
cube
in
current_pos
:
num_list
[
cube
[
0
]
-
1
][
cube
[
1
]
-
1
]
=
color
screen
.
blit
(
background
,
(
0
,
0
))
current_pos
=
[]
for
cube
in
current_shape
:
pos
=
(
cube
[
0
]
+
center
[
0
],
cube
[
1
]
+
center
[
1
])
current_pos
.
append
(
pos
)
for
cube
in
current_pos
:
pygame
.
draw
.
rect
(
screen
,
color
,
(
cube
[
1
]
*
20
-
20
,
cube
[
0
]
*
20
-
20
,
20
,
20
),
0
)
pygame
.
draw
.
rect
(
screen
,
(
255
,
255
,
255
),
(
cube
[
1
]
*
20
-
20
,
cube
[
0
]
*
20
-
20
,
20
,
20
),
1
)
for
i
,
row
in
zip
(
range
(
1
,
26
),
num_list
):
for
j
,
colors
in
zip
(
range
(
1
,
16
),
row
):
if
colors
!=
0
:
pygame
.
draw
.
rect
(
screen
,
colors
,
(
j
*
20
-
20
,
i
*
20
-
20
,
20
,
20
),
0
)
pygame
.
draw
.
rect
(
screen
,
(
255
,
255
,
255
),
(
j
*
20
-
20
,
i
*
20
-
20
,
20
,
20
),
1
)
new_list
=
[]
for
i
in
range
(
25
):
new_list
.
append
([
0
]
*
15
)
row_index
=
24
for
i
in
range
(
24
,
-
1
,
-
1
):
is_full
=
True
for
j
in
range
(
15
):
if
num_list
[
i
][
j
]
==
0
:
is_full
=
False
if
is_full
==
False
:
new_list
[
row_index
]
=
num_list
[
i
]
row_index
-=
1
else
:
score
+=
10
num_list
=
new_list
#小方块超出高度
if
num_list
[
1
][
7
]
!=
0
:
gameover
=
True
if
gameover
==
True
:
text
=
font1
.
render
(
'游戏结束,按任意键从新开始'
,
True
,
(
0
,
0
,
0
))
screen
.
blit
(
text
,
(
100
,
200
))
score
=
0
num_list
=
[]
for
i
in
range
(
25
):
num_list
.
append
([
0
]
*
15
)
# 得分
text_surface
=
font
.
render
(
str
(
score
),
True
,
(
0
,
0
,
0
))
screen
.
blit
(
text_surface
,
(
350
,
70
))
pygame
.
display
.
update
()
clock
.
tick
(
FPS
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment