import pgzrun import random #background WIDTH = 600 HEIGHT = 200 def draw(): screen.fill((80,0,70)) #colour WHITE = (255,255,255) BLACK = (0,0,0) clock = pgzrun.time.Clock() FPS = 60 gravity = 0.8 jump_vel = -16 is_jump = False #dinosaur dino_x = 50 dino_y = 140 dino_y_vel = 0 is_jump = False #bairies cactus_list = [] cactus_speed = 6 spawn_timer = 0 #game condition game_over = False score = 0 font = pgzrun.font.SysFont(None,30) #main loop running = True while running: clock.tick(FPS) screen.fill(WHITE) for event in pgzrun.event.get(): if event.type == pgzrun.QUIT: running = False if event.type == pgzrun.KEYKNOWN: if event.key == pgzrun.K_SPACE and not is_jump and not game_over: dino_y_vel = jump_vel is_jump = True #restart the game if event.key == pgzrun.K_SPACE and game_over: game_over = False score = 0 cactus_list.clear() dino_y = 140 dino_y_vel = 0 if not game_over: dino_y_vel += gravity dino_y += dino_y_vel if dino_y >= 140: dino_y = 140 dino_y_vel = 0 is_jump = False #produce bairy spawn_timer += 1 if spawn_timer > 80: cactus_x = WIDTH cactus_y = 150 cactus_list.append([cactus_x , cactus_y]) spawn_timer = random.randint(40,80) #movement of cactus+ score for cactus in cactus_list: cactus[0] -= cactus_speed score += 0.1 cactus_list = [c for c in cactus_list if c[0] > -20] #checking touches dino_rect = pgzrun.Rect(dino_x , dino_y , 30,40) for cactus in cactus_list: cactus_rect = pgzrun.Rect(cactus[0],cactus[1],20,30) if dino_rect.colliderect(cactus_list): game_over = True #draw dinosaur pgzrun.draw.rect(screen,BLACK,(dino_x,dino_y,30,40)) #draw cactus for c in cactus_list: pgzrun.draw.rect(screen,BLACK,(c[0],c[1],20,30)) #draw horizon pgzrun.draw.line(screen,BLACK,(0,180),(WIDTH,180),2) #draw score score_text = font.render(f"Score: {int(score)}" ,True,BLACK) screen.blit(score_text,(450,20)) #notice of game over if game_over: over_text = font.render("Game Over! Press SPACE to restart", True,BLACK) screen.blit(over_text,(120,80)) pgzrun.display.update() pgzrun.go()