Exemple #1
0
 def move(self, other):
     '''
     Вводишь предыдущий шарик (который ближе к башке) и он двигает этот. Движение змеи происходит с хвоста
     '''
     self.x = other.x
     self.y = other.y
     self.coords = Vector2d(self.x, self.y)
Exemple #2
0
    def __init__(self, color=colors.skins_snake, name=0):
        ''' Создает новую змею в случайном месте, длиной 50 шариков.
        Координатой змеи считаются координаты центра головы. '''
        '''
        Не готово:
        1) Имя змеи
        '''
        if color == colors.skins_snake:
            self.colors = random.choice(colors.skins_snake)
        else:
            self.colors = color
        self.num = len(self.colors)
        self.name = name
        self.energy = 0

        self.x = 500
        self.y = 500
        self.coords = Vector2d(self.x, self.y)
        self.r = 5
        config.snake_radius = self.r
        self.length = 0
        self.life = 1

        self.balls = []
        head = Head(color=self.colors[0], x=self.x, y=self.y)
        self.balls += [head]
        self.length += 1
        for i in range(9):
            color = self.colors[(i + 1) % self.num]
            new_ball = Ball(x=self.x, y=self.y, color=color, r=5)
            self.balls += [new_ball]
            self.length += 1
        self.energy = self.length
        self.speed_timer = 0
Exemple #3
0
    def __init__(self, x, y, color, r):
        '''
        Создает шарик змеи с заданными координатами и радиусом.
        '''

        self.r = r
        self.x = x
        self.y = y
        self.coords = Vector2d(self.x, self.y)
        self.color = color
Exemple #4
0
 def move(self, speeding=1):
     ''' Двигает змею, начиная с последнего шарика, меняяя его координаты
     на координаты предыдущего. Для головы движение прописано в отдельном классе.
     Speeding принимает значение либо 1, либо 2-4, когда зажата кнопка мыши. '''
     if len(self.balls) > 9:
         for i in range(speeding):
             for b in reversed(self.balls):
                 if self.balls.index(b) > 0:
                     b.move(self.balls[(self.balls.index(b) - 1)])
                 else:
                     b.move(speeding)
                     self.x = b.x
                     self.y = b.y
                     self.coords = Vector2d(self.x, self.y)
             self.hit()
             self.eat()
         if speeding != 1:
             self.speed_timer += 1
         else:
             self.speed_timer = 0
         if self.speed_timer >= 4:
             self.speed_timer = 0
             self.energy -= 1
             self.reduction()
     else:
         for b in reversed(self.balls):
             if self.balls.index(b) > 0:
                 b.move(self.balls[(self.balls.index(b) - 1)])
             else:
                 b.move(speeding)
                 self.x = b.x
                 self.y = b.y
                 self.coords = Vector2d(self.x, self.y)
         self.hit()
         self.eat()
     if self.x - self.r < 0 or self.x + self.r > config.max_width or self.y + self.r > config.max_height or self.y - self.r < 0:
         self.destroyed()
Exemple #5
0
 def __init__(self, r=0, x=0, y=0, color=colors.food):
     '''
     Создается 1 шарик еды, с заданными координатами, радиусом, цвет выбирается случайно из списка цветов.
     '''
     self.x = x
     self.y = y
     self.r = r
     if color == colors.food:
         self.color = random.choice(color)
     else:
         self.color = color
     if self.r == 0:
         self.r = random.uniform(1, 5)
     self.energy = 0.5 * self.r
     config.food_energy += self.energy
     if self.x == 0 and self.y == 0:  # Создает шарик еды в случайном месте
         self.x = random.uniform(5, config.max_width - 5)
         self.y = random.uniform(5, config.max_height - 5)
     self.coords = Vector2d(self.x, self.y)
Exemple #6
0
class road1:
    pos = Vector2d(100, 100)
    pos_np = np.array([100, 100])
    angle = 0
    data = [
        Line_seg(Vector2d(22, 273), Vector2d(33, 76)),
        Line_seg(Vector2d(33, 76), Vector2d(151, 33)),
        Line_seg(Vector2d(151, 33), Vector2d(350, 26)),
        Line_seg(Vector2d(350, 26), Vector2d(552, 31)),
        Line_seg(Vector2d(552, 31), Vector2d(726, 60)),
        Line_seg(Vector2d(726, 60), Vector2d(785, 159)),
        Line_seg(Vector2d(785, 159), Vector2d(708, 225)),
        Line_seg(Vector2d(708, 225), Vector2d(561, 222)),
        Line_seg(Vector2d(561, 222), Vector2d(505, 188)),
        Line_seg(Vector2d(505, 188), Vector2d(387, 189)),
        Line_seg(Vector2d(387, 189), Vector2d(318, 262)),
        Line_seg(Vector2d(318, 262), Vector2d(400, 343)),
        Line_seg(Vector2d(400, 343), Vector2d(573, 332)),
        Line_seg(Vector2d(573, 332), Vector2d(684, 333)),
        Line_seg(Vector2d(684, 333), Vector2d(761, 385)),
        Line_seg(Vector2d(761, 385), Vector2d(773, 509)),
        Line_seg(Vector2d(773, 509), Vector2d(719, 545)),
        Line_seg(Vector2d(719, 545), Vector2d(561, 562)),
        Line_seg(Vector2d(561, 562), Vector2d(471, 529)),
        Line_seg(Vector2d(471, 529), Vector2d(399, 470)),
        Line_seg(Vector2d(399, 470), Vector2d(299, 492)),
        Line_seg(Vector2d(299, 492), Vector2d(232, 555)),
        Line_seg(Vector2d(232, 555), Vector2d(140, 567)),
        Line_seg(Vector2d(140, 567), Vector2d(50, 525)),
        Line_seg(Vector2d(50, 525), Vector2d(36, 426)),
        Line_seg(Vector2d(36, 426), Vector2d(20, 349)),
        Line_seg(Vector2d(20, 349), Vector2d(22, 273)),
        Line_seg(Vector2d(126, 147), Vector2d(221, 112)),
        Line_seg(Vector2d(221, 112), Vector2d(364, 98)),
        Line_seg(Vector2d(364, 98), Vector2d(514, 103)),
        Line_seg(Vector2d(514, 103), Vector2d(657, 117)),
        Line_seg(Vector2d(657, 117), Vector2d(690, 141)),
        Line_seg(Vector2d(690, 141), Vector2d(648, 149)),
        Line_seg(Vector2d(648, 149), Vector2d(589, 142)),
        Line_seg(Vector2d(589, 142), Vector2d(525, 134)),
        Line_seg(Vector2d(525, 134), Vector2d(475, 128)),
        Line_seg(Vector2d(475, 128), Vector2d(428, 119)),
        Line_seg(Vector2d(428, 119), Vector2d(355, 116)),
        Line_seg(Vector2d(355, 116), Vector2d(294, 136)),
        Line_seg(Vector2d(294, 136), Vector2d(265, 163)),
        Line_seg(Vector2d(265, 163), Vector2d(237, 211)),
        Line_seg(Vector2d(237, 211), Vector2d(222, 279)),
        Line_seg(Vector2d(222, 279), Vector2d(235, 328)),
        Line_seg(Vector2d(235, 328), Vector2d(289, 368)),
        Line_seg(Vector2d(289, 368), Vector2d(352, 385)),
        Line_seg(Vector2d(352, 385), Vector2d(393, 385)),
        Line_seg(Vector2d(393, 385), Vector2d(416, 388)),
        Line_seg(Vector2d(416, 388), Vector2d(477, 395)),
        Line_seg(Vector2d(477, 395), Vector2d(539, 398)),
        Line_seg(Vector2d(539, 398), Vector2d(601, 397)),
        Line_seg(Vector2d(601, 397), Vector2d(644, 399)),
        Line_seg(Vector2d(644, 399), Vector2d(679, 413)),
        Line_seg(Vector2d(679, 413), Vector2d(686, 440)),
        Line_seg(Vector2d(686, 440), Vector2d(677, 469)),
        Line_seg(Vector2d(677, 469), Vector2d(649, 485)),
        Line_seg(Vector2d(649, 485), Vector2d(606, 487)),
        Line_seg(Vector2d(606, 487), Vector2d(550, 473)),
        Line_seg(Vector2d(550, 473), Vector2d(521, 451)),
        Line_seg(Vector2d(521, 451), Vector2d(479, 429)),
        Line_seg(Vector2d(479, 429), Vector2d(432, 411)),
        Line_seg(Vector2d(432, 411), Vector2d(400, 399)),
        Line_seg(Vector2d(400, 399), Vector2d(336, 390)),
        Line_seg(Vector2d(336, 390), Vector2d(285, 400)),
        Line_seg(Vector2d(285, 400), Vector2d(242, 422)),
        Line_seg(Vector2d(242, 422), Vector2d(211, 463)),
        Line_seg(Vector2d(211, 463), Vector2d(168, 459)),
        Line_seg(Vector2d(168, 459), Vector2d(125, 411)),
        Line_seg(Vector2d(125, 411), Vector2d(102, 339)),
        Line_seg(Vector2d(102, 339), Vector2d(110, 281)),
        Line_seg(Vector2d(110, 281), Vector2d(120, 211)),
        Line_seg(Vector2d(120, 211), Vector2d(126, 147))
    ]
    goals = [
        Line_seg(Vector2d(196, 155), Vector2d(133, 22)),
        Line_seg(Vector2d(285, 127), Vector2d(279, 15)),
        Line_seg(Vector2d(431, 113), Vector2d(430, 17)),
        Line_seg(Vector2d(566, 123), Vector2d(580, 19)),
        Line_seg(Vector2d(651, 134), Vector2d(755, 62)),
        Line_seg(Vector2d(642, 141), Vector2d(722, 241)),
        Line_seg(Vector2d(604, 135), Vector2d(575, 232)),
        Line_seg(Vector2d(528, 124), Vector2d(503, 203)),
        Line_seg(Vector2d(415, 112), Vector2d(424, 200)),
        Line_seg(Vector2d(307, 122), Vector2d(389, 210)),
        Line_seg(Vector2d(224, 214), Vector2d(366, 256)),
        Line_seg(Vector2d(269, 376), Vector2d(373, 289)),
        Line_seg(Vector2d(384, 392), Vector2d(393, 323)),
        Line_seg(Vector2d(419, 397), Vector2d(416, 331)),
        Line_seg(Vector2d(488, 410), Vector2d(485, 323)),
        Line_seg(Vector2d(570, 412), Vector2d(569, 314)),
        Line_seg(Vector2d(671, 423), Vector2d(731, 345)),
        Line_seg(Vector2d(670, 462), Vector2d(755, 554)),
        Line_seg(Vector2d(615, 479), Vector2d(634, 581)),
        Line_seg(Vector2d(555, 455), Vector2d(490, 551)),
        Line_seg(Vector2d(470, 416), Vector2d(406, 501)),
        Line_seg(Vector2d(373, 392), Vector2d(371, 497)),
        Line_seg(Vector2d(237, 403), Vector2d(341, 534)),
        Line_seg(Vector2d(190, 446), Vector2d(185, 584)),
        Line_seg(Vector2d(147, 398), Vector2d(22, 457)),
        Line_seg(Vector2d(127, 334), Vector2d(10, 334)),
        Line_seg(Vector2d(128, 269), Vector2d(13, 227))
    ]
Exemple #7
0
class road3:
    pos = Vector2d(100, 100)
    pos_np = np.array([100, 100])
    angle = 90
    data = [
        Line_seg(Vector2d(28, 86), Vector2d(69, 46)),
        Line_seg(Vector2d(69, 46), Vector2d(159, 38)),
        Line_seg(Vector2d(159, 38), Vector2d(270, 49)),
        Line_seg(Vector2d(270, 49), Vector2d(348, 55)),
        Line_seg(Vector2d(348, 55), Vector2d(420, 57)),
        Line_seg(Vector2d(420, 57), Vector2d(492, 67)),
        Line_seg(Vector2d(492, 67), Vector2d(550, 92)),
        Line_seg(Vector2d(550, 92), Vector2d(613, 136)),
        Line_seg(Vector2d(613, 136), Vector2d(631, 182)),
        Line_seg(Vector2d(631, 182), Vector2d(667, 261)),
        Line_seg(Vector2d(667, 261), Vector2d(673, 321)),
        Line_seg(Vector2d(673, 321), Vector2d(651, 365)),
        Line_seg(Vector2d(651, 365), Vector2d(597, 400)),
        Line_seg(Vector2d(597, 400), Vector2d(544, 421)),
        Line_seg(Vector2d(544, 421), Vector2d(500, 434)),
        Line_seg(Vector2d(500, 434), Vector2d(479, 460)),
        Line_seg(Vector2d(479, 460), Vector2d(472, 507)),
        Line_seg(Vector2d(472, 507), Vector2d(478, 564)),
        Line_seg(Vector2d(478, 564), Vector2d(432, 582)),
        Line_seg(Vector2d(432, 582), Vector2d(353, 581)),
        Line_seg(Vector2d(353, 581), Vector2d(260, 577)),
        Line_seg(Vector2d(260, 577), Vector2d(192, 560)),
        Line_seg(Vector2d(192, 560), Vector2d(130, 519)),
        Line_seg(Vector2d(130, 519), Vector2d(83, 464)),
        Line_seg(Vector2d(83, 464), Vector2d(60, 410)),
        Line_seg(Vector2d(60, 410), Vector2d(47, 354)),
        Line_seg(Vector2d(47, 354), Vector2d(41, 288)),
        Line_seg(Vector2d(41, 288), Vector2d(23, 215)),
        Line_seg(Vector2d(23, 215), Vector2d(20, 163)),
        Line_seg(Vector2d(20, 163), Vector2d(19, 129)),
        Line_seg(Vector2d(19, 129), Vector2d(28, 86)),
        Line_seg(Vector2d(135, 158), Vector2d(198, 156)),
        Line_seg(Vector2d(198, 156), Vector2d(279, 158)),
        Line_seg(Vector2d(279, 158), Vector2d(346, 165)),
        Line_seg(Vector2d(346, 165), Vector2d(417, 169)),
        Line_seg(Vector2d(417, 169), Vector2d(466, 177)),
        Line_seg(Vector2d(466, 177), Vector2d(508, 180)),
        Line_seg(Vector2d(508, 180), Vector2d(553, 219)),
        Line_seg(Vector2d(553, 219), Vector2d(566, 251)),
        Line_seg(Vector2d(566, 251), Vector2d(564, 286)),
        Line_seg(Vector2d(564, 286), Vector2d(552, 309)),
        Line_seg(Vector2d(552, 309), Vector2d(519, 330)),
        Line_seg(Vector2d(519, 330), Vector2d(457, 337)),
        Line_seg(Vector2d(457, 337), Vector2d(417, 359)),
        Line_seg(Vector2d(417, 359), Vector2d(383, 402)),
        Line_seg(Vector2d(383, 402), Vector2d(376, 443)),
        Line_seg(Vector2d(376, 443), Vector2d(368, 481)),
        Line_seg(Vector2d(368, 481), Vector2d(300, 479)),
        Line_seg(Vector2d(300, 479), Vector2d(227, 456)),
        Line_seg(Vector2d(227, 456), Vector2d(193, 408)),
        Line_seg(Vector2d(193, 408), Vector2d(151, 333)),
        Line_seg(Vector2d(151, 333), Vector2d(135, 270)),
        Line_seg(Vector2d(135, 270), Vector2d(140, 222)),
        Line_seg(Vector2d(140, 222), Vector2d(135, 158))
    ]
    goals = np.flip(
        np.array([
            Line_seg(Vector2d(183, 183), Vector2d(199, 23)),
            Line_seg(Vector2d(263, 191), Vector2d(305, 33)),
            Line_seg(Vector2d(395, 201), Vector2d(413, 34)),
            Line_seg(Vector2d(491, 206), Vector2d(534, 42)),
            Line_seg(Vector2d(520, 230), Vector2d(641, 130)),
            Line_seg(Vector2d(536, 270), Vector2d(692, 243)),
            Line_seg(Vector2d(520, 291), Vector2d(663, 398)),
            Line_seg(Vector2d(496, 313), Vector2d(560, 436)),
            Line_seg(Vector2d(432, 338), Vector2d(525, 468)),
            Line_seg(Vector2d(360, 405), Vector2d(541, 506)),
            Line_seg(Vector2d(357, 469), Vector2d(510, 553)),
            Line_seg(Vector2d(339, 467), Vector2d(379, 592)),
            Line_seg(Vector2d(300, 458), Vector2d(275, 593)),
            Line_seg(Vector2d(270, 446), Vector2d(158, 567)),
            Line_seg(Vector2d(209, 386), Vector2d(49, 467)),
            Line_seg(Vector2d(171, 319), Vector2d(29, 307)),
            Line_seg(Vector2d(157, 236), Vector2d(13, 191))
        ]))
Exemple #8
0
 def __init__(self, x_y_tuple):
     x, y = x_y_tuple
     Vector2d.__init__(self, x, y)
Exemple #9
0
green = (100, 255, 100)

clock = pygame.time.Clock()
crashed = False

key_pressed = {
    'right': False,
    'left': False,
    'up': False,
    'down': False,
    'space': False
}

x = (display_width * 0.45)
y = (display_height * 0.5)
p1 = Car(Vector2d(100, 100), 40, 20)
speed = 200
curr_goal = 0

road = roads.road2.data
goals = roads.road2.goals

while not crashed:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            crashed = True

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT or event.key == pygame.K_a:
                key_pressed['left'] = True
            if event.key == pygame.K_RIGHT or event.key == pygame.K_d:
Exemple #10
0
import colors  #шняга в которой будут задаваться численные параметры и цветовое оформление игр, а еще все штуки на которые надо ссылаться
from vector import Vector2d

screen_width = 800
screen_height = 600
max_width = 800
max_height = 600
background_image = 'images/background_1(2, 3, 4).jpg'  #потом выберем фон
screen = 0
process = True

energy = 0
food_energy = 0
snake_energy = 0
max_energy = 100
snake_radius = 5  # Радиус змеи в абсолютных координатах, меняется в процессе игры
radius = 10  # Сколько реальных пикселей занимает радиус змеи (на экране)
center = Vector2d(screen_width // 2, screen_height // 2)
coefficient = 0.5  # Коэффициент для нахождения минимального радиуса по которому может двигаться голова змеи
length = 0

snakes = []
all_food = []
Exemple #11
0
 def __init__(self, joint):
     self.joint = joint
     Vector2d.__init__(self, 0, 0)
Exemple #12
0
 def __init__(self):
     self.coords_1 = Vector2d(0, 0)
     self.coords_2 = Vector2d(0, config.max_height)
     self.coords_3 = Vector2d(config.max_width, config.max_height)
     self.coords_4 = Vector2d(config.max_width, 0)