Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Administrator
/
level3-lesson17-diy2
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
ba3e9bc3
authored
a year ago
by
BellCodeEditor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
save project
parent
cf5a6359
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
225 additions
and
0 deletions
方法是东西.py
方法是东西.py
0 → 100644
View file @
ba3e9bc3
import
tkinter
import
tkinter
def
gh
():
name
=
e1
.
get
()
n3
=
e2
.
get
()
n4
=
e3
.
get
()
print
(
"名是"
,
name
,
n3
,
n4
)
root
=
tkinter
.
Tk
()
root
.
title
(
"hhhhh,俊捷注册"
)
root
.
geometry
(
"400x320+500+300"
)
root
.
resizable
(
width
=
False
,
height
=
False
)
e1
=
tkinter
.
Entry
(
root
,
show
=
None
,
font
=
(
"宋体"
,
14
),
bg
=
"light grey"
,
width
=
18
)
e1
.
place
(
x
=
140
,
y
=
80
)
e2
=
tkinter
.
Entry
(
root
,
show
=
None
,
font
=
(
"宋体"
,
14
),
bg
=
"light grey"
,
width
=
18
)
e2
.
place
(
x
=
140
,
y
=
140
)
e3
=
tkinter
.
Entry
(
root
,
show
=
None
,
font
=
(
"宋体"
,
14
),
bg
=
"light grey"
,
width
=
18
)
e3
.
place
(
x
=
140
,
y
=
200
)
lab
=
tkinter
.
Label
(
root
,
text
=
"输入信息"
,
font
=
(
"宋体"
,
15
),
fg
=
"black"
,
width
=
40
,
height
=
4
)
lab
.
place
(
x
=
0
,
y
=
0
)
lab1
=
tkinter
.
Label
(
root
,
text
=
"名:"
,
font
=
(
"宋体"
,
15
),
fg
=
"black"
)
lab1
.
place
(
x
=
60
,
y
=
80
)
lab2
=
tkinter
.
Label
(
root
,
text
=
"密码"
,
font
=
(
"宋体"
,
15
),
fg
=
"black"
)
lab2
.
place
(
x
=
60
,
y
=
140
)
lab3
=
tkinter
.
Label
(
root
,
text
=
"确认密码"
,
font
=
(
"宋体"
,
15
),
fg
=
"black"
)
lab3
.
place
(
x
=
50
,
y
=
200
)
lab
=
tkinter
.
Label
(
root
,
text
=
"贪吃蛇"
,
font
=
(
"宋体"
,
15
),
fg
=
"black"
,
width
=
40
,
height
=
4
)
lab
.
place
(
x
=
100
,
y
=
220
)
button
=
tkinter
.
Button
(
root
,
text
=
"提交"
,
bg
=
"lightgreen"
,
width
=
15
,
command
=
gh
)
button
.
place
(
x
=
150
,
y
=
250
)
import
msvcrt
print
root
.
mainloop
()
""" 贪吃蛇小游戏 """
import
random
import
sys
import
time
import
pygame
from
pygame.locals
import
*
from
collections
import
deque
SCREEN_WIDTH
=
600
SCREEN_HEIGHT
=
480
SIZE
=
20
def
print_text
(
screen
,
font
,
x
,
y
,
text
,
fcolor
=
(
255
,
255
,
255
)):
imgText
=
font
.
render
(
text
,
True
,
fcolor
)
screen
.
blit
(
imgText
,
(
x
,
y
))
def
main
():
pygame
.
init
()
screen
=
pygame
.
display
.
set_mode
((
SCREEN_WIDTH
,
SCREEN_HEIGHT
))
pygame
.
display
.
set_caption
(
'贪吃蛇'
)
light
=
(
100
,
100
,
100
)
# 蛇的颜色
dark
=
(
200
,
200
,
200
)
# 食物颜色
font1
=
pygame
.
font
.
SysFont
(
'SimHei'
,
24
)
# 得分的字体
font2
=
pygame
.
font
.
Font
(
None
,
72
)
# GAME OVER 的字体
red
=
(
200
,
30
,
30
)
# GAME OVER 的字体颜色
fwidth
,
fheight
=
font2
.
size
(
'GAME OVER'
)
line_width
=
1
# 网格线宽度
black
=
(
0
,
0
,
0
)
# 网格线颜色
bgcolor
=
(
40
,
40
,
60
)
# 背景色
# 方向,起始向右
pos_x
=
1
pos_y
=
0
# 如果蛇正在向右移动,那么快速点击向下向左,由于程序刷新没那么快,向下事件会被向左覆盖掉,导致蛇后退,直接GAME OVER
# b 变量就是用于防止这种情况的发生
b
=
True
# 范围
scope_x
=
(
0
,
SCREEN_WIDTH
//
SIZE
-
1
)
scope_y
=
(
2
,
SCREEN_HEIGHT
//
SIZE
-
1
)
# 蛇
snake
=
deque
()
# 食物
food_x
=
0
food_y
=
0
# 初始化蛇
def
_init_snake
():
nonlocal
snake
snake
.
clear
()
snake
.
append
((
2
,
scope_y
[
0
]))
snake
.
append
((
1
,
scope_y
[
0
]))
snake
.
append
((
0
,
scope_y
[
0
]))
# 食物
def
_create_food
():
nonlocal
food_x
,
food_y
food_x
=
random
.
randint
(
scope_x
[
0
],
scope_x
[
1
])
food_y
=
random
.
randint
(
scope_y
[
0
],
scope_y
[
1
])
while
(
food_x
,
food_y
)
in
snake
:
# 为了防止食物出到蛇身上
food_x
=
random
.
randint
(
scope_x
[
0
],
scope_x
[
1
])
food_y
=
random
.
randint
(
scope_y
[
0
],
scope_y
[
1
])
_init_snake
()
_create_food
()
game_over
=
True
start
=
False
# 是否开始,当start = True,game_over = True 时,才显示 GAME OVER
score
=
0
# 得分
orispeed
=
0.5
# 原始速度
speed
=
orispeed
last_move_time
=
None
pause
=
False
# 暂停
while
True
:
for
event
in
pygame
.
event
.
get
():
if
event
.
type
==
QUIT
:
sys
.
exit
()
elif
event
.
type
==
KEYDOWN
:
if
event
.
key
==
K_RETURN
:
if
game_over
:
start
=
True
game_over
=
False
b
=
True
_init_snake
()
_create_food
()
pos_x
=
1
pos_y
=
0
# 得分
score
=
0
last_move_time
=
time
.
time
()
elif
event
.
key
==
K_SPACE
:
if
not
game_over
:
pause
=
not
pause
elif
event
.
key
in
(
K_w
,
K_UP
):
# 这个判断是为了防止蛇向上移时按了向下键,导致直接 GAME OVER
if
b
and
not
pos_y
:
pos_x
=
0
pos_y
=
-
1
b
=
False
elif
event
.
key
in
(
K_s
,
K_DOWN
):
if
b
and
not
pos_y
:
pos_x
=
0
pos_y
=
1
b
=
False
elif
event
.
key
in
(
K_a
,
K_LEFT
):
if
b
and
not
pos_x
:
pos_x
=
-
1
pos_y
=
0
b
=
False
elif
event
.
key
in
(
K_d
,
K_RIGHT
):
if
b
and
not
pos_x
:
pos_x
=
1
pos_y
=
0
b
=
False
# 填充背景色
screen
.
fill
(
bgcolor
)
# 画网格线 竖线
for
x
in
range
(
SIZE
,
SCREEN_WIDTH
,
SIZE
):
pygame
.
draw
.
line
(
screen
,
black
,
(
x
,
scope_y
[
0
]
*
SIZE
),
(
x
,
SCREEN_HEIGHT
),
line_width
)
# 画网格线 横线
for
y
in
range
(
scope_y
[
0
]
*
SIZE
,
SCREEN_HEIGHT
,
SIZE
):
pygame
.
draw
.
line
(
screen
,
black
,
(
0
,
y
),
(
SCREEN_WIDTH
,
y
),
line_width
)
if
game_over
:
if
start
:
print_text
(
screen
,
font2
,
(
SCREEN_WIDTH
-
fwidth
)
//
2
,
(
SCREEN_HEIGHT
-
fheight
)
//
2
,
'GAME OVER'
,
red
)
else
:
curTime
=
time
.
time
()
if
curTime
-
last_move_time
>
speed
:
if
not
pause
:
b
=
True
last_move_time
=
curTime
next_s
=
(
snake
[
0
][
0
]
+
pos_x
,
snake
[
0
][
1
]
+
pos_y
)
if
next_s
[
0
]
==
food_x
and
next_s
[
1
]
==
food_y
:
# 吃到了食物
_create_food
()
snake
.
appendleft
(
next_s
)
score
+=
10
speed
=
orispeed
-
0.03
*
(
score
//
100
)
else
:
if
scope_x
[
0
]
<=
next_s
[
0
]
<=
scope_x
[
1
]
and
scope_y
[
0
]
<=
next_s
[
1
]
<=
scope_y
[
1
]
\
and
next_s
not
in
snake
:
snake
.
appendleft
(
next_s
)
snake
.
pop
()
else
:
game_over
=
True
# 画食物
if
not
game_over
:
# 避免 GAME OVER 的时候把 GAME OVER 的字给遮住了
pygame
.
draw
.
rect
(
screen
,
light
,
(
food_x
*
SIZE
,
food_y
*
SIZE
,
SIZE
,
SIZE
),
0
)
# 画蛇
for
s
in
snake
:
pygame
.
draw
.
rect
(
screen
,
dark
,
(
s
[
0
]
*
SIZE
+
line_width
,
s
[
1
]
*
SIZE
+
line_width
,
SIZE
-
line_width
*
2
,
SIZE
-
line_width
*
2
),
0
)
print_text
(
screen
,
font1
,
30
,
7
,
f
'速度: {
score // 100}'
)
print_text
(
screen
,
font1
,
450
,
7
,
f
'得分: {
score}'
)
pygame
.
display
.
update
()
if
__name__
==
'__main__'
:
main
()
This diff is collapsed.
Click to expand it.
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