├── goose ├── 1-1.png ├── 1-2.png ├── 1-3.png ├── 1-4.png └── 1-5.png ├── images ├── background.png ├── bonus.png ├── enemy.png └── player.png ├── main.py └── readme.md /goose/1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ViktorSvertoka/python-game/6f6be26b7a3d05e1a60c4c36dca76ab365db3911/goose/1-1.png -------------------------------------------------------------------------------- /goose/1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ViktorSvertoka/python-game/6f6be26b7a3d05e1a60c4c36dca76ab365db3911/goose/1-2.png -------------------------------------------------------------------------------- /goose/1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ViktorSvertoka/python-game/6f6be26b7a3d05e1a60c4c36dca76ab365db3911/goose/1-3.png -------------------------------------------------------------------------------- /goose/1-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ViktorSvertoka/python-game/6f6be26b7a3d05e1a60c4c36dca76ab365db3911/goose/1-4.png -------------------------------------------------------------------------------- /goose/1-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ViktorSvertoka/python-game/6f6be26b7a3d05e1a60c4c36dca76ab365db3911/goose/1-5.png -------------------------------------------------------------------------------- /images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ViktorSvertoka/python-game/6f6be26b7a3d05e1a60c4c36dca76ab365db3911/images/background.png -------------------------------------------------------------------------------- /images/bonus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ViktorSvertoka/python-game/6f6be26b7a3d05e1a60c4c36dca76ab365db3911/images/bonus.png -------------------------------------------------------------------------------- /images/enemy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ViktorSvertoka/python-game/6f6be26b7a3d05e1a60c4c36dca76ab365db3911/images/enemy.png -------------------------------------------------------------------------------- /images/player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ViktorSvertoka/python-game/6f6be26b7a3d05e1a60c4c36dca76ab365db3911/images/player.png -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import pygame 2 | from pygame.constants import QUIT, K_DOWN, K_UP, K_LEFT, K_RIGHT 3 | import random 4 | from os import listdir 5 | 6 | 7 | pygame.init() 8 | 9 | FPS = pygame.time.Clock() 10 | 11 | screen = width, height = 1200, 800 12 | 13 | BLACK = 0, 0, 0 14 | WHITE = 255, 255, 255 15 | RED = 255, 0, 0 16 | GREEN = 0, 255, 0 17 | 18 | font = pygame.font.SysFont("Verdana", 20) 19 | 20 | main_surface = pygame.display.set_mode(screen) 21 | 22 | IMGS_PATH = "goose" 23 | 24 | 25 | def create_player(): 26 | player_imgs = [ 27 | pygame.image.load(IMGS_PATH + "/" + file).convert_alpha() 28 | for file in listdir(IMGS_PATH) 29 | ] 30 | player_new_size = (75, 25) 31 | player_resized = pygame.transform.scale(player_imgs[0], player_new_size) 32 | player_rect = player_resized.get_rect() 33 | player_speed = 10 34 | return player_imgs, player_resized, player_rect, player_speed, player_new_size 35 | 36 | 37 | ( 38 | player_imgs, 39 | player_resized, 40 | player_rect, 41 | player_speed, 42 | player_new_size, 43 | ) = create_player() 44 | 45 | CHANGE_IMG = pygame.USEREVENT + 3 46 | pygame.time.set_timer(CHANGE_IMG, 125) 47 | 48 | bg = pygame.transform.scale( 49 | pygame.image.load("./images/background.png").convert(), screen 50 | ) 51 | bgx = 0 52 | bgx2 = bg.get_width() 53 | bg_speed = 3 54 | 55 | 56 | def create_enemy(): 57 | enemy = pygame.image.load("./images/enemy.png").convert_alpha() 58 | enemy_new_size = (100, 35) 59 | enemy_resized = pygame.transform.scale(enemy, enemy_new_size) 60 | enemy_rect = pygame.Rect(width, random.randint(0, height), *enemy.get_size()) 61 | enemy_speed = random.randint(2, 5) 62 | return [enemy_resized, enemy_rect, enemy_speed] 63 | 64 | 65 | CREATE_ENEMY = pygame.USEREVENT + 1 66 | pygame.time.set_timer(CREATE_ENEMY, 1500) 67 | 68 | enemies = [] 69 | 70 | 71 | def create_bonus(): 72 | bonus = pygame.image.load("./images/bonus.png").convert_alpha() 73 | bonus_new_size = (90, 150) 74 | bonus_resized = pygame.transform.scale(bonus, bonus_new_size) 75 | bonus_rect = pygame.Rect(random.randint(0, width), -height, *bonus.get_size()) 76 | bonus_speed = random.randint(2, 5) 77 | return [bonus_resized, bonus_rect, bonus_speed] 78 | 79 | 80 | CREATE_BONUS = pygame.USEREVENT + 2 81 | pygame.time.set_timer(CREATE_BONUS, 2500) 82 | 83 | img_index = 0 84 | 85 | scores = 0 86 | 87 | bonuses = [] 88 | 89 | is_working = True 90 | 91 | while is_working: 92 | 93 | FPS.tick(60) 94 | 95 | for event in pygame.event.get(): 96 | if event.type == QUIT: 97 | is_working = False 98 | 99 | if event.type == CREATE_ENEMY: 100 | enemies.append(create_enemy()) 101 | 102 | if event.type == CREATE_BONUS: 103 | bonuses.append(create_bonus()) 104 | 105 | if event.type == CHANGE_IMG: 106 | img_index += 1 107 | if img_index == len(player_imgs): 108 | img_index = 0 109 | 110 | pressed_keys = pygame.key.get_pressed() 111 | 112 | bgx -= bg_speed 113 | bgx2 -= bg_speed 114 | 115 | if bgx < -bg.get_width(): 116 | bgx = bg.get_width() 117 | 118 | if bgx2 < -bg.get_width(): 119 | bgx2 = bg.get_width() 120 | 121 | main_surface.blit(bg, (bgx, 0)) 122 | main_surface.blit(bg, (bgx2, 0)) 123 | 124 | main_surface.blit(player_imgs[img_index], player_rect) 125 | 126 | main_surface.blit(font.render(str(scores), True, BLACK), (width - 30, 0)) 127 | 128 | for enemy in enemies: 129 | enemy[1] = enemy[1].move(-enemy[2], 0) 130 | main_surface.blit(enemy[0], enemy[1]) 131 | 132 | if enemy[1].left < 0: 133 | enemies.pop(enemies.index(enemy)) 134 | 135 | if player_rect.colliderect(enemy[1]): 136 | is_working = False 137 | 138 | for bonus in bonuses: 139 | bonus[1] = bonus[1].move(0, bonus[2]) 140 | main_surface.blit(bonus[0], bonus[1]) 141 | 142 | if bonus[1].top > height: 143 | bonuses.pop(bonuses.index(bonus)) 144 | 145 | if player_rect.colliderect(bonus[1]): 146 | bonuses.pop(bonuses.index(bonus)) 147 | scores += 1 148 | 149 | if pressed_keys[K_DOWN] and player_rect.bottom < height: 150 | player_rect = player_rect.move(0, player_speed) 151 | 152 | if pressed_keys[K_UP] and player_rect.top > 0: 153 | player_rect = player_rect.move(0, -player_speed) 154 | 155 | if pressed_keys[K_RIGHT] and player_rect.right < width: 156 | player_rect = player_rect.move(player_speed, 0) 157 | 158 | if pressed_keys[K_LEFT] and player_rect.left > 0: 159 | player_rect = player_rect.move(-player_speed, 0) 160 | 161 | pygame.display.flip() 162 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Python Mini Game 2 | 3 | ``` 4 | 5 | pip3 install pygame --- встановлення бібліотеки 6 | 7 | python3 main.py --- вивід у консоль 8 | 9 | ``` 10 | --------------------------------------------------------------------------------