Movatterモバイル変換


[0]ホーム

URL:


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

Commit9a74a76

Browse files
committed
second
1 parent846419a commit9a74a76

28 files changed

+655
-0
lines changed

‎__pycache__/pygame.cpython-310.pyc‎

3.23 KB
Binary file not shown.

‎bricks.png‎

28.2 KB
Loading

‎cactus.png‎

8.66 KB
Loading

‎cactus_bricks.png‎

78.2 KB
Loading

‎car.py‎

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
importpygame
2+
frompygame.localsimport*
3+
importrandom
4+
5+
pygame.init()
6+
7+
# create the window
8+
width=500
9+
height=500
10+
screen_size= (width,height)
11+
screen=pygame.display.set_mode(screen_size)
12+
pygame.display.set_caption('Car Game')
13+
14+
# colors
15+
gray= (100,100,100)
16+
green= (76,208,56)
17+
red= (200,0,0)
18+
white= (255,255,255)
19+
yellow= (255,232,0)
20+
21+
# road and marker sizes
22+
road_width=300
23+
marker_width=10
24+
marker_height=50
25+
26+
# lane coordinates
27+
left_lane=150
28+
center_lane=250
29+
right_lane=350
30+
lanes= [left_lane,center_lane,right_lane]
31+
32+
# road and edge markers
33+
road= (100,0,road_width,height)
34+
left_edge_marker= (95,0,marker_width,height)
35+
right_edge_marker= (395,0,marker_width,height)
36+
37+
# for animating movement of the lane markers
38+
lane_marker_move_y=0
39+
40+
# player's starting coordinates
41+
player_x=250
42+
player_y=400
43+
44+
# frame settings
45+
clock=pygame.time.Clock()
46+
fps=120
47+
48+
# game settings
49+
gameover=False
50+
speed=2
51+
score=0
52+
53+
classVehicle(pygame.sprite.Sprite):
54+
55+
def__init__(self,image,x,y):
56+
pygame.sprite.Sprite.__init__(self)
57+
58+
# scale the image down so it's not wider than the lane
59+
image_scale=45/image.get_rect().width
60+
new_width=image.get_rect().width*image_scale
61+
new_height=image.get_rect().height*image_scale
62+
self.image=pygame.transform.scale(image, (new_width,new_height))
63+
64+
self.rect=self.image.get_rect()
65+
self.rect.center= [x,y]
66+
67+
classPlayerVehicle(Vehicle):
68+
69+
def__init__(self,x,y):
70+
image=pygame.image.load('images/Car.png')
71+
super().__init__(image,x,y)
72+
73+
# sprite groups
74+
player_group=pygame.sprite.Group()
75+
vehicle_group=pygame.sprite.Group()
76+
77+
# create the player's car
78+
player=PlayerVehicle(player_x,player_y)
79+
player_group.add(player)
80+
81+
# load the vehicle images
82+
image_filenames= ['Mini_truck.png','truck.png','taxi.png','Mini_van.png']
83+
vehicle_images= []
84+
forimage_filenameinimage_filenames:
85+
image=pygame.image.load('images/'+image_filename)
86+
vehicle_images.append(image)
87+
88+
# load the crash image
89+
crash=pygame.image.load('images/crash.png')
90+
crash_rect=crash.get_rect()
91+
92+
# game loop
93+
running=True
94+
whilerunning:
95+
96+
clock.tick(fps)
97+
98+
foreventinpygame.event.get():
99+
ifevent.type==QUIT:
100+
running=False
101+
102+
# move the player's car using the left/right arrow keys
103+
ifevent.type==KEYDOWN:
104+
105+
ifevent.key==K_LEFTandplayer.rect.center[0]>left_lane:
106+
player.rect.x-=100
107+
elifevent.key==K_RIGHTandplayer.rect.center[0]<right_lane:
108+
player.rect.x+=100
109+
110+
# check if there's a side swipe collision after changing lanes
111+
forvehicleinvehicle_group:
112+
ifpygame.sprite.collide_rect(player,vehicle):
113+
114+
gameover=True
115+
116+
# place the player's car next to other vehicle
117+
# and determine where to position the crash image
118+
ifevent.key==K_LEFT:
119+
player.rect.left=vehicle.rect.right
120+
crash_rect.center= [player.rect.left, (player.rect.center[1]+vehicle.rect.center[1])/2]
121+
elifevent.key==K_RIGHT:
122+
player.rect.right=vehicle.rect.left
123+
crash_rect.center= [player.rect.right, (player.rect.center[1]+vehicle.rect.center[1])/2]
124+
125+
126+
# draw the grass
127+
screen.fill(green)
128+
129+
# draw the road
130+
pygame.draw.rect(screen,gray,road)
131+
132+
# draw the edge markers
133+
pygame.draw.rect(screen,yellow,left_edge_marker)
134+
pygame.draw.rect(screen,yellow,right_edge_marker)
135+
136+
# draw the lane markers
137+
lane_marker_move_y+=speed*2
138+
iflane_marker_move_y>=marker_height*2:
139+
lane_marker_move_y=0
140+
foryinrange(marker_height*-2,height,marker_height*2):
141+
pygame.draw.rect(screen,white, (left_lane+45,y+lane_marker_move_y,marker_width,marker_height))
142+
pygame.draw.rect(screen,white, (center_lane+45,y+lane_marker_move_y,marker_width,marker_height))
143+
144+
# draw the player's car
145+
player_group.draw(screen)
146+
147+
# add a vehicle
148+
iflen(vehicle_group)<2:
149+
150+
# ensure there's enough gap between vehicles
151+
add_vehicle=True
152+
forvehicleinvehicle_group:
153+
ifvehicle.rect.top<vehicle.rect.height*1.5:
154+
add_vehicle=False
155+
156+
ifadd_vehicle:
157+
158+
# select a random lane
159+
lane=random.choice(lanes)
160+
161+
# select a random vehicle image
162+
image=random.choice(vehicle_images)
163+
vehicle=Vehicle(image,lane,height/-2)
164+
vehicle_group.add(vehicle)
165+
166+
# make the vehicles move
167+
forvehicleinvehicle_group:
168+
vehicle.rect.y+=speed
169+
170+
# remove vehicle once it goes off screen
171+
ifvehicle.rect.top>=height:
172+
vehicle.kill()
173+
174+
# add to score
175+
score+=1
176+
177+
# speed up the game after passing 5 vehicles
178+
ifscore>0andscore%5==0:
179+
speed+=1
180+
181+
# draw the vehicles
182+
vehicle_group.draw(screen)
183+
184+
# display the score
185+
font=pygame.font.Font(pygame.font.get_default_font(),16)
186+
text=font.render('Score: '+str(score),True,white)
187+
text_rect=text.get_rect()
188+
text_rect.center= (50,400)
189+
screen.blit(text,text_rect)
190+
191+
# check if there's a head on collision
192+
ifpygame.sprite.spritecollide(player,vehicle_group,True):
193+
gameover=True
194+
crash_rect.center= [player.rect.center[0],player.rect.top]
195+
196+
# display game over
197+
ifgameover:
198+
screen.blit(crash,crash_rect)
199+
200+
pygame.draw.rect(screen,red, (0,50,width,100))
201+
202+
font=pygame.font.Font(pygame.font.get_default_font(),16)
203+
text=font.render('Game over. Play again? (Enter Y or N)',True,white)
204+
text_rect=text.get_rect()
205+
text_rect.center= (width/2,100)
206+
screen.blit(text,text_rect)
207+
208+
pygame.display.update()
209+
210+
# wait for user's input to play again or exit
211+
whilegameover:
212+
213+
clock.tick(fps)
214+
215+
foreventinpygame.event.get():
216+
217+
ifevent.type==QUIT:
218+
gameover=False
219+
running=False
220+
221+
# get the user's input (y or n)
222+
ifevent.type==KEYDOWN:
223+
ifevent.key==K_y:
224+
# reset the game
225+
gameover=False
226+
speed=2
227+
score=0
228+
vehicle_group.empty()
229+
player.rect.center= [player_x,player_y]
230+
elifevent.key==K_n:
231+
# exit the loops
232+
gameover=False
233+
running=False
234+
235+
pygame.quit()

‎dragon.png‎

14.5 KB
Loading

‎end.png‎

96.4 KB
Loading

‎fire.png‎

15.2 KB
Loading

‎fire_bricks.png‎

84.3 KB
Loading

‎fireball.png‎

6.01 KB
Loading

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp