Как сделать арканоид игру на Python для начинающих?

Пользователь

от savannah , в категории: Python , 3 года назад

Как сделать арканоид игру на Python для начинающих?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ethel , 3 года назад

@savannah  Вы можете создать игру Арканоид используя этот пример:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
from tkinter import *
import random
import time


class Ball:
    def __init__(self, canvas, paddle, color):
        self.canvas = canvas
        self.paddle = paddle
        self.id = canvas.create_oval(10, 10, 25, 25, fill=color)
        self.canvas.move(self.id, 245, 100)
        starts = [-3, -2, -1, 1, 2, 3]
        random.shuffle(starts)
        self.x = starts[0]
        self.y = -3
        self.canvas_height = self.canvas.winfo_height()
        self.canvas_width = self.canvas.winfo_width()
        self.hit_bottom = False


     
 
        
    def hit_paddle(self, pos):
        paddle_pos = self.canvas.coords(self.paddle.id)
        if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:
            if pos[3] >= paddle_pos [1] and pos[3] <= paddle_pos[3]:
                return True
            return False


    
    def draw(self):
            self.canvas.move(self.id, self.x, self.y)
            pos = self.canvas.coords(self.id)
            if pos[1] <= 0:
                self.y = 3
            if pos[3] >= self.canvas_height:
                self.hit_bottom = True
            if self.hit_paddle(pos) == True:
                self.y = -3
            if pos[0] <=0:
                self.x = 3
            if pos[2] >= self.canvas_width:
                self.x = -3
 
     
                         
class Paddle:
    def __init__ (self, canvas, color):
        self.canvas = canvas
        self.id = canvas.create_rectangle(0, 0, 100, 20, fill=color)
        self.canvas.move(self.id, 200, 300)
        self.x = 0
        self.canvas_width = self.canvas.winfo_width()
        self.canvas.bind_all('<KeyPress-Left>', self.turn_left)
        self.canvas.bind_all('<KeyPress-Right>', self.turn_right)
        
        
        
    def draw (self):
        self.canvas.move(self.id, self.x, 0)
        pos = self.canvas.coords(self.id)
        if pos[0] <= 0:
            self.x = 0
        elif pos[2]  >= self.canvas_width:
            self.x = 0                                                                                                                                                                                                                    
    def turn_left(self, evt):
        self.x = -2
        
    def turn_right(self, evt):
        self.x = 2
           
tk = Tk()
tk.title("Game")
tk.resizable(0,0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)
canvas.pack()
tk.update()



paddle = Paddle(canvas, 'dark green')
ball = Ball(canvas, paddle, 'purple')





           
        


while 1:
    if ball.hit_bottom == False:
        ball.draw()
        paddle.draw()
    tk.update_idletasks()
    tk.update()
    time.sleep(0.01)


Пользователь

от leila.dickinson , 2 года назад

@savannah 

Для создания игры Arkanoid на Python для начинающих Вам понадобится использовать библиотеку pygame. Вот некоторые шаги, которые можно выполнить:

  1. Установите библиотеку pygame. Для этого можно использовать команду pip install pygame.
  2. Создайте файл с названием Arkanoid.py и импортируйте библиотеку pygame.
1
import pygame


  1. Создайте окно игры, используя следующий код:
1
2
3
pygame.init()
win = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Arkanoid")


  1. Создайте классы для объектов в игре, таких как: ракетка, шар и блоки.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class Paddle:
    def __init__(self, x, y, width, height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.rect = pygame.Rect(x, y, width, height)
    
    def draw(self, win):
        pygame.draw.rect(win, (255, 255, 255), self.rect)
        
    def move_left(self):
        self.x -= 5
        self.rect.x = self.x
        
    def move_right(self):
        self.x += 5
        self.rect.x = self.x

class Ball:
    def __init__(self, x, y, radius, color):
        self.x = x
        self.y = y
        self.radius = radius
        self.color = color
    
    def draw(self, win):
        pygame.draw.circle(win, self.color, (self.x, self.y), self.radius)
        
    def move(self, x, y):
        self.x += x
        self.y += y

class Block:
    def __init__(self, x, y, width, height, color):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.color = color
        self.rect = pygame.Rect(x, y, width, height)
    
    def draw(self, win):
        pygame.draw.rect(win, self.color, self.rect)


  1. Создайте цикл игры, который будет обновлять экран и проверять наличие столкновений.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
run = True
paddle = Paddle(350, 550, 100, 10)
ball = Ball(400, 300, 10, (255, 255, 255))
blocks = []
for i in range(10):
    for j in range(5):
        block = Block(i*80+80, j*30+50, 75, 20, (255, 0, 0))
        blocks.append(block)

while run:
    pygame.time.delay(10)
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
    
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and paddle.x > 0:
        paddle.move_left()
    if keys[pygame.K_RIGHT] and paddle.x + paddle.width < 800:
        paddle.move_right()
    
    win.fill((0, 0, 0))
    paddle.draw(win)
    ball.draw(win)
    
    for block in blocks:
        block.draw(win)
    
    ball.move(1,1)
    
    if ball.y < 0:
        ball.y += 1
    if ball.x < 0 or ball.x > 800:
        ball.x -= 1
    if ball.y > 600:
        run = False
    
    if ball.rect.colliderect(paddle.rect):
        ball.y -= 1
    
    for block in blocks:
        if ball.rect.colliderect(block.rect):
            ball.y -= 1
            blocks.remove(block)
    
    pygame.display.update()

pygame.quit()


  1. Ваша игра готова!