Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 95a0627

Browse files
乌鸦 代码提交
1 parent 8d36333 commit 95a0627

File tree

9 files changed

+196
-0
lines changed

9 files changed

+196
-0
lines changed

‎wuya/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
- [jdSignin](https://github.com/JustDoPython/python-examples/tree/master/wuya/jdSignin) : 3分钟写一个脚本,每天定时薅东哥羊毛
44
- [shRent_1](https://github.com/JustDoPython/python-examples/tree/master/wuya/shRent_1) : 为了在上海租房,我用python连夜爬了20000多条房源信息...
5+
- [midAutumn](https://github.com/JustDoPython/python-examples/tree/master/wuya/midAutumn) : 中秋假期,回不了家的程序员,竟然用Python做了这件事...
6+
57

68
---
79

‎wuya/midAutumn/mid_autumn_game.py

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
# 导入所需模块
2+
import random
3+
import pygame
4+
5+
# pygame初始化
6+
pygame.init()
7+
8+
# 设置主屏窗口
9+
screen = pygame.display.set_mode((600, 800))
10+
11+
# 设置游戏名称
12+
pygame.display.set_caption("明月几时有")
13+
14+
# 加载背景
15+
bg_menu = pygame.image.load("pic/bg1.jpg")
16+
bg_game = pygame.image.load("pic/bg2.jpg")
17+
word_menu = pygame.image.load("pic/word.png")
18+
19+
# 加载UI
20+
target = pygame.image.load("pic/target.png")
21+
wrong = pygame.image.load("pic/wrong.png")
22+
player = pygame.image.load("pic/player.png")
23+
btn = pygame.image.load("pic/button.png")
24+
25+
# 定义文字,初始化变量
26+
score_word = "分数"
27+
time_word = "机会"
28+
end_word = "你的分数是{},中秋快乐!"
29+
30+
font = pygame.font.SysFont("Microsoft YaHei", 40)
31+
32+
score = 0
33+
score_num = font.render(str(score), True, (255, 255, 255))
34+
time = 4
35+
time_num = font.render(str(time), True, (255, 255, 255))
36+
37+
time_text = font.render(time_word, True, (255, 255, 255))
38+
score_text = font.render(score_word, True, (255, 255, 255))
39+
end_text = font.render(end_word.format(score), True, (255, 255, 255))
40+
41+
now_pos = 0
42+
speed1 = 1
43+
speed2 = 1.5
44+
tar_pos = []
45+
wro_pos = []
46+
47+
48+
# 控制月饼密度
49+
for i in range(0, 8):
50+
tar_pos.append([random.randint(50, 550),(i - 1) * 100])
51+
52+
# 控制树枝密度
53+
for i in range(0, 2):
54+
wro_pos.append([random.randint(50, 550),(i - 1) * 300])
55+
56+
57+
# 按钮类
58+
class Button(object):
59+
# 初始化
60+
def __init__(self, btn, position):
61+
self.btn = btn
62+
self.position = position
63+
64+
def show(self):
65+
weight, height = self.btn.get_size()
66+
x_pos, y_pos = self.position
67+
screen.blit(self.btn, (x_pos-weight/2, y_pos-height/2))
68+
69+
# 判断是否按下
70+
def click(self):
71+
if event.type == pygame.MOUSEBUTTONDOWN:
72+
point_x, point_y = pygame.mouse.get_pos()
73+
x_pos, y_pos = self.position
74+
weight, height = self.btn.get_size()
75+
ok_x = x_pos-weight/2 < point_x < x_pos+weight/2
76+
ok_y = y_pos-height/2 < point_y < y_pos+height/2
77+
if ok_x and ok_y:
78+
return True
79+
80+
button = Button(btn, (300, 420))
81+
82+
while True:
83+
for event in pygame.event.get():
84+
if event.type == pygame.QUIT:
85+
exit()
86+
87+
# 初始菜单
88+
screen.blit(bg_menu, (0, 0))
89+
screen.blit(word_menu, (0, -70))
90+
button.show()
91+
if button.click():
92+
time = 3
93+
score = 0
94+
score_num = font.render(str(score), True, (255, 255, 255))
95+
time_num = font.render(str(time), True, (255, 255, 255))
96+
97+
# 开始游戏
98+
if time > 0 and time < 4 and score >= 0:
99+
screen.blit(bg_game, (0, 0))
100+
screen.blit(time_text, (50, 50))
101+
screen.blit(time_num, (170, 50))
102+
screen.blit(score_text, (50, 100))
103+
screen.blit(score_num, (170, 100))
104+
screen.blit(player, (now_pos, 550))
105+
106+
# 速度变化
107+
if score <= 30:
108+
speed1 = 0.8
109+
speed2 = 1.2
110+
elif score <= 60:
111+
speed1 = 1
112+
speed2 = 1.5
113+
elif score <= 90:
114+
speed1 = 1.2
115+
speed2 = 1.8
116+
elif score <= 120:
117+
speed1 = 1.4
118+
speed2 = 2.1
119+
elif score <= 150:
120+
speed1 = 1.8
121+
speed2 = 2.7
122+
elif score <= 200:
123+
speed1 = 2
124+
speed2 = 3
125+
elif score <= 250:
126+
speed1 = 3
127+
speed2 = 4.5
128+
else:
129+
speed1 = 4
130+
speed2 = 6
131+
132+
# 月饼运动路线
133+
for i in range(len(tar_pos)):
134+
screen.blit(pygame.transform.scale(target, (50, 50)), (tar_pos[i][0], tar_pos[i][1] - 800))
135+
tar_pos[i][1] += speed1
136+
if tar_pos[i][1] > 1600:
137+
tar_pos[i][1] = 800
138+
tar_pos[i][0] = random.randint(50, 550)
139+
score -= 2
140+
score_num = font.render(str(score), True, (255, 255, 255))
141+
# 边界判定
142+
if tar_pos[i][0] + 50 > now_pos and tar_pos[i][0] < now_pos + 75 and tar_pos[i][1] >= 1300 and tar_pos[i][1] <= 1500:
143+
tar_pos[i][1] = 800
144+
tar_pos[i][0] = random.randint(50, 550)
145+
score += 10
146+
score_num = font.render(str(score), True, (255, 255, 255))
147+
148+
# 树枝运动路线
149+
for i in range(len(wro_pos)):
150+
screen.blit(pygame.transform.scale(wrong, (50, 50)), (wro_pos[i][0], wro_pos[i][1] - 800))
151+
wro_pos[i][1] += speed2
152+
if wro_pos[i][1] > 1600:
153+
wro_pos[i][1] = 800
154+
wro_pos[i][0] = random.randint(50, 550)
155+
# 边界判定
156+
if wro_pos[i][0] + 50 > now_pos and wro_pos[i][0] < now_pos + 75 and wro_pos[i][1] >= 1300 and wro_pos[i][1] <= 1500:
157+
wro_pos[i][1]= 800
158+
wro_pos[i][0] = random.randint(50, 550)
159+
time -= 1
160+
time_num = font.render(str(time), True, (255, 255, 255))
161+
162+
# 角色移动
163+
if event.type == pygame.MOUSEMOTION:
164+
move_x, move_y = pygame.mouse.get_pos()
165+
now_pos = move_x - 75
166+
if now_pos < 0:
167+
now_pos = 0
168+
if now_pos > 600:
169+
now_pos = 525
170+
171+
# 重新开始游戏
172+
if time == 0 or score < 0:
173+
# 初始化游戏
174+
now_pos = 0
175+
speed = 1
176+
# 月饼运动路线
177+
for i in range(len(tar_pos)):
178+
tar_pos[i][0] = random.randint(50, 550)
179+
tar_pos[i][1] = (i - 1) * 100
180+
# 树枝运动路线
181+
for i in range(len(wro_pos)):
182+
wro_pos[i][0] = random.randint(50, 550)
183+
wro_pos[i][1] = (i - 1) * 300
184+
end_text = font.render(end_word.format(score), True, (255, 255, 255))
185+
screen.blit(bg_menu, (0, 0))
186+
screen.blit(end_text, (50, 220))
187+
button.show()
188+
# 点击按钮重开
189+
if button.click():
190+
time = 3
191+
score = 0
192+
score_num = font.render(str(score), True, (255, 255, 255))
193+
194+
pygame.display.update()

‎wuya/midAutumn/pic/bg1.jpg

40.2 KB
Loading[フレーム]

‎wuya/midAutumn/pic/bg2.jpg

38.2 KB
Loading[フレーム]

‎wuya/midAutumn/pic/button.png

55.1 KB
Loading[フレーム]

‎wuya/midAutumn/pic/player.png

41.2 KB
Loading[フレーム]

‎wuya/midAutumn/pic/target.png

123 KB
Loading[フレーム]

‎wuya/midAutumn/pic/word.png

36.3 KB
Loading[フレーム]

‎wuya/midAutumn/pic/wrong.png

6.5 KB
Loading[フレーム]

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /