Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
bellcode
/
lesson3-3_DIY1
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
802d75ad
authored
Sep 10, 2023
by
BellCodeEditor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
save project
parent
654bc3ba
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
314 additions
and
0 deletions
fdfd。py
ssss.py
sssss.py
wwwwwwwwwwwwwwww.py
fdfd。py
0 → 100644
View file @
802d75ad
++ "b/fdfd\343\200\202py"
ssss.py
0 → 100644
View file @
802d75ad
import
turtle
screen
=
turtle
.
Screen
()
screen
.
bgcolor
(
"light blue"
)
len
=
screen
.
textinput
(
"提示"
,
"haha"
)
len
=
int
(
len
)
pen
=
turtle
.
Pen
()
pen
.
write
(
"静夜思
\n
床前明月光,
\n
疑是地上霜。
\n
举头望明月,
\n
低头思故乡。"
,
font
=
(
"Times"
,
30
,
"normal"
))
pen
.
hideturtle
()
len
=
60
pen
.
penup
()
pen
.
goto
(
100
,
100
)
pen1
=
turtle
.
Pen
()
pen1
.
color
(
"red"
)
pen1
.
pensize
(
5
)
pen1
.
left
(
45
)
pen1
.
forward
(
2
*
len
)
pen1
.
circle
(
len
,
180
)
pen1
.
right
(
90
)
pen1
.
circle
(
len
,
180
)
pen1
.
forward
(
2
*
len
)
pen
.
hideturtle
()
turtle
.
done
()
\ No newline at end of file
sssss.py
0 → 100644
View file @
802d75ad
import
random
import
pygame
SCREEN_RECT
=
pygame
.
Rect
(
0
,
0
,
660
,
909
)
FRAME_PER_SEC
=
60
CREATE_ENEMY_EVENT
=
pygame
.
USEREVENT
HERO_FIRE_EVENT
=
pygame
.
USEREVENT
+
1
class
GameSprite
(
pygame
.
sprite
.
Sprite
):
def
__init__
(
self
,
image_name
,
speed
=
1
,
speed1
=
1
):
super
()
.
__init__
()
self
.
image
=
pygame
.
image
.
load
(
image_name
)
self
.
rect
=
self
.
image
.
get_rect
()
self
.
speed
=
speed
self
.
speed1
=
speed1
def
update
(
self
):
self
.
rect
.
y
+=
self
.
speed
class
Background
(
GameSprite
):
def
__init__
(
self
,
is_alt
=
False
):
super
()
.
__init__
(
"./ditu.jpg"
)
if
is_alt
:
self
.
rect
.
y
=-
self
.
rect
.
height
def
update
(
self
):
super
()
.
update
()
if
self
.
rect
.
y
>=
SCREEN_RECT
.
height
:
self
.
rect
.
y
=-
self
.
rect
.
height
class
Enemy
(
GameSprite
):
def
__init__
(
self
):
if
random
.
random
()
<
0.21
:
super
()
.
__init__
(
"./bd2.png"
)
elif
random
.
random
()
>
0.81
:
super
()
.
__init__
(
"./bd4.png"
)
elif
random
.
random
()
>
0.21
and
random
.
random
()
<
0.4
:
super
()
.
__init__
(
"./bd5.png"
)
else
:
super
()
.
__init__
(
"./bd6.png"
)
self
.
speed
=
random
.
randint
(
1
,
2
)
self
.
rect
.
bottom
=
0
max_x
=
SCREEN_RECT
.
width
-
self
.
rect
.
width
self
.
rect
.
x
=
random
.
randint
(
0
,
max_x
)
pass
def
update
(
self
):
super
()
.
update
()
if
self
.
rect
.
y
>=
SCREEN_RECT
.
height
:
self
.
kill
()
def
__del__
(
self
):
pass
class
Hero
(
GameSprite
):
def
__init__
(
self
):
super
()
.
__init__
(
"./ys1.png"
,
0
)
self
.
rect
.
centerx
=
SCREEN_RECT
.
centerx
self
.
rect
.
bottom
=
SCREEN_RECT
.
bottom
-
50
self
.
bullets
=
pygame
.
sprite
.
Group
()
def
update
(
self
):
self
.
rect
.
x
+=
self
.
speed
self
.
rect
.
y
+=
self
.
speed1
if
self
.
rect
.
x
<
0
:
self
.
rect
.
x
=
0
elif
self
.
rect
.
right
>
SCREEN_RECT
.
right
:
self
.
rect
.
right
=
SCREEN_RECT
.
right
elif
self
.
rect
.
y
>
800
:
self
.
rect
.
y
=
800
elif
self
.
rect
.
y
<
SCREEN_RECT
.
top
:
self
.
rect
.
y
=
SCREEN_RECT
.
top
def
fire
(
self
):
keys_pressed
=
pygame
.
key
.
get_pressed
()
if
keys_pressed
[
pygame
.
K_SPACE
]:
sound3
=
pygame
.
mixer
.
Sound
(
"./hu1.wav"
)
sound3
.
play
()
for
i
in
range
(
1
):
bullet
=
BUllet
()
bullet
.
rect
.
bottom
=
self
.
rect
.
y
bullet
.
rect
.
centerx
=
self
.
rect
.
centerx
+
i
*
42
self
.
bullets
.
add
(
bullet
)
class
BUllet
(
GameSprite
):
def
__init__
(
self
):
super
()
.
__init__
(
"./2.png"
,
-
4
)
def
update
(
self
):
super
()
.
update
()
if
self
.
rect
.
bottom
<
0
:
self
.
kill
()
def
__del__
(
self
):
pass
\ No newline at end of file
wwwwwwwwwwwwwwww.py
0 → 100644
View file @
802d75ad
mport
os
import
cfg
import
sys
import
pygame
import
random
from
modules
import
*
'''游戏初始化'''
def
initGame
():
# 初始化pygame, 设置展示窗口
pygame
.
init
()
screen
=
pygame
.
display
.
set_mode
(
cfg
.
SCREENSIZE
)
pygame
.
display
.
set_caption
(
'catch coins —— 九歌'
)
# 加载必要的游戏素材
game_images
=
{}
for
key
,
value
in
cfg
.
IMAGE_PATHS
.
items
():
if
isinstance
(
value
,
list
):
images
=
[]
for
item
in
value
:
images
.
append
(
pygame
.
image
.
load
(
item
))
game_images
[
key
]
=
images
else
:
game_images
[
key
]
=
pygame
.
image
.
load
(
value
)
game_sounds
=
{}
for
key
,
value
in
cfg
.
AUDIO_PATHS
.
items
():
if
key
==
'bgm'
:
continue
game_sounds
[
key
]
=
pygame
.
mixer
.
Sound
(
value
)
# 返回初始化数据
return
screen
,
game_images
,
game_sounds
'''主函数'''
def
main
():
# 初始化
screen
,
game_images
,
game_sounds
=
initGame
()
# 播放背景音乐
pygame
.
mixer
.
music
.
load
(
cfg
.
AUDIO_PATHS
[
'bgm'
])
pygame
.
mixer
.
music
.
play
(
-
1
,
0.0
)
# 字体加载
font
=
pygame
.
font
.
Font
(
cfg
.
FONT_PATH
,
40
)
# 定义hero
hero
=
Hero
(
game_images
[
'hero'
],
position
=
(
375
,
520
))
# 定义食物组
food_sprites_group
=
pygame
.
sprite
.
Group
()
generate_food_freq
=
random
.
randint
(
10
,
20
)
generate_food_count
=
0
# 当前分数/历史最高分
score
=
0
highest_score
=
0
if
not
os
.
path
.
exists
(
cfg
.
HIGHEST_SCORE_RECORD_FILEPATH
)
else
int
(
open
(
cfg
.
HIGHEST_SCORE_RECORD_FILEPATH
)
.
read
())
# 游戏主循环
clock
=
pygame
.
time
.
Clock
()
while
True
:
# --填充背景
screen
.
fill
(
0
)
screen
.
blit
(
game_images
[
'background'
],
(
0
,
0
))
# --倒计时信息
countdown_text
=
'Count down: '
+
str
((
90000
-
pygame
.
time
.
get_ticks
())
//
60000
)
+
":"
+
str
((
90000
-
pygame
.
time
.
get_ticks
())
//
1000
%
60
)
.
zfill
(
2
)
countdown_text
=
font
.
render
(
countdown_text
,
True
,
(
0
,
0
,
0
))
countdown_rect
=
countdown_text
.
get_rect
()
countdown_rect
.
topright
=
[
cfg
.
SCREENSIZE
[
0
]
-
30
,
5
]
screen
.
blit
(
countdown_text
,
countdown_rect
)
# --按键检测
for
event
in
pygame
.
event
.
get
():
if
event
.
type
==
pygame
.
QUIT
:
pygame
.
quit
()
sys
.
exit
()
key_pressed
=
pygame
.
key
.
get_pressed
()
if
key_pressed
[
pygame
.
K_a
]
or
key_pressed
[
pygame
.
K_LEFT
]:
hero
.
move
(
cfg
.
SCREENSIZE
,
'left'
)
if
key_pressed
[
pygame
.
K_d
]
or
key_pressed
[
pygame
.
K_RIGHT
]:
hero
.
move
(
cfg
.
SCREENSIZE
,
'right'
)
# --随机生成食物
generate_food_count
+=
1
if
generate_food_count
>
generate_food_freq
:
generate_food_freq
=
random
.
randint
(
10
,
20
)
generate_food_count
=
0
food
=
Food
(
game_images
,
random
.
choice
([
'gold'
,]
*
10
+
[
'apple'
]),
cfg
.
SCREENSIZE
)
food_sprites_group
.
add
(
food
)
for
food
in
food_sprites_group
:
if
food
.
update
():
food_sprites_group
.
remove
(
food
)
# --碰撞检测
for
food
in
food_sprites_group
:
if
pygame
.
sprite
.
collide_mask
(
food
,
hero
):
game_sounds
[
'get'
]
.
play
()
food_sprites_group
.
remove
(
food
)
score
+=
food
.
score
if
score
>
highest_score
:
highest_score
=
score
# --画hero
hero
.
draw
(
screen
)
# --画食物
food_sprites_group
.
draw
(
screen
)
# --显示得分
score_text
=
f
'Score: {score}, Highest: {highest_score}'
score_text
=
font
.
render
(
score_text
,
True
,
(
0
,
0
,
0
))
score_rect
=
score_text
.
get_rect
()
score_rect
.
topleft
=
[
5
,
5
]
screen
.
blit
(
score_text
,
score_rect
)
if
pygame
.
time
.
get_ticks
()
>=
90000
:
break
# --更新屏幕
pygame
.
display
.
flip
()
clock
.
tick
(
cfg
.
FPS
)
# 游戏结束, 记录最高分并显示游戏结束画面
fp
=
open
(
cfg
.
HIGHEST_SCORE_RECORD_FILEPATH
,
'w'
)
fp
.
write
(
str
(
highest_score
))
fp
.
close
()
return
showEndGameInterface
(
screen
,
cfg
,
score
,
highest_score
)
'''run'''
if
__name__
==
'__main__'
:
while
main
():
pass
\ No newline at end of file
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