Форум сайта python.su
Я создаю игрушку, думал вроде бы настроил столкновение игрока с врагами. Но когда очередной раз запускал чтобы проверить не ошибся ли при работе с музыкой, узнал что сталкиваться с врагом я могу только с левой его стороны. Пробовал исправить, но, смерть защитывается только подходя к врагу слева.
def pause(): if paused == True: pause = myfont1.render('ПАУЗА!', 10, (200, 200, 200)) # Строки паузы pause1 = myfont1.render("Чтобы продолжить жмите ENTER", 10, (200, 200, 200)) screen.set_alpha(100) # Прозрачность слоя выставленна на 100 win.blit(screen1, (0, 0)) # Включение слоя скрин1 screen1.blit(pause, (480, 250)) # Отрисовка надписи паузы screen1.blit(pause1, (180, 350)) # Отрисовка надписи паузы else: screen.set_alpha(255) def otladka(): if cord == True: # Вывод строк в экран отладки string1 = myfont.render('Игрок: X '+ str(x) + ' Y ' + str(y), 0, (30,20,60)) # Строки экрана отладки string2 = myfont.render('Враг(и) в зоне видимости: X: ' + str(sx) + ' Y: ' + str(sy) + ' X1: ' + str(sx1) + ' Y1: ' + str(sy1), 0, (30,20,60)) string5 = myfont.render('Координаты мышки в окне: ' + str(a), 0, (30,20,60)) string6 = myfont.render('Кол-во FPS: ' + str(fps), 0, (30,20,60)) screen.blit(string2, (0, 50)) screen.blit(string1, (0, 30)) screen.blit(string5, (0, 10)) screen.blit(string6, (0, 90)) fu = input() #from menu import menu import pygame as pg import random import time pg.init() # импортируем библиотеку для игрушки win = pg.display.set_mode((1200, 700)) # Создвние главного окна программы screen = pg.Surface((1200, 700)) # Втоой слой screen1 = pg.Surface((1200, 700)) # Третий слой pg.display.set_caption('game') #Создание окна "GAME" width = 100 # Ширина height = 100 # Высота x = 600 # Позиция Y Игрока y = 400 # Позиция X игрока speed = 30 # Скорость игрока spd = 10 # Скорость врага sy = -100 # Позиция Y врага sx = 100 # Позиция X врага spd1 = 10 # Скорость врага1 sy1 = -60 # Позиция Y врага1 sx1 = 350 # Позиция X врага1 myfont = pg.font.SysFont("monospace", 20) # Системный шрифт в отладчике, выставленный на размер 15 myfont1 = pg.font.SysFont("arial", 50) # Системный шрифт в паузе, выставленный на размер 50 clock = pg.time.Clock() #Для обозначения фпс fps = 60 time1 = 0 m = False death = False # Смерть выключена cord = False # Экран отладки выключен run = True # Цикл включен paused = True # Пауза выключена record = False r1 = False r2 = False rn = False sound1 = pg.mixer.Sound('C:\\Users\Юрий\Desktop\python\MyGame\m.wav') soundlose = pg.mixer.Sound('C:\\Users\Юрий\Desktop\python\MyGame\lose.wav') sound1.play(-1) while run: # Главный цикл игры pg.time.delay(20) a = pg.mouse.get_pos() for event in pg.event.get(): if event.type == pg.QUIT: run = False # Разрешает завершение программы через крестик keys = pg.key.get_pressed() # Для регистрации клавиш win.blit(screen1, (0, 0)) # Включение слоя скрин1 if death == False: if sx >= x and sx <= x + 100 and sy >= y and sy <= y + 100: death = True r1 = True if sx1 >= x and sx1 <= x + 100 and sy1 >= y and sy1 <= y + 100: death = True r1 = True pause() if keys[pg.K_RETURN]: # Выключение паузы paused = False if keys[pg.K_ESCAPE]: # Включение паузы paused = True if keys[pg.K_TAB]: # Включение паузы run = False if paused == False: time1 += 0.030 #if rn == False: #spd = random.randint(10, 40)# Бесконечное движение врага вниз sy += spd # Бесконечное движение врага вниз if sy >= 700: sy = random.randint(-10, 0) # Позиция Y врага sx = random.randint(0, 900) # Позиция X врага #if rn == False: #spd1 = random.randint(10, 40) sy1 += spd1 # Бесконечное движение врага вниз if sy1 >= 700: sy1 = random.randint(-20, 0) # Позиция Y врага 1 sx1 = random.randint(0, 900) # Позиция X врага 1 if keys[pg.K_d]: # Движение вправо по клавише D x += speed if x > 1050: x = 1050 if keys[pg.K_a]: # Движение влево по клавише A x -= speed if x < 80: x = 70 if keys[pg.K_g] and cord == False: # Включатель экрана отладки cord = True if keys[pg.K_h] and cord == True: # Выключатель экрана отладки cord = False string3 = myfont.render('Вы проигали!', 0, (30,20,60)) string4 = myfont.render('Вы пока не прогирали!', 0, (30,20,60)) screen.fill((0, 255, 0)) #Заливка 2 слоя if run == True: p_time = myfont.render(str(time1), 10, (30, 20, 60)) screen.blit(p_time, (1130, 1)) # Отрисовка надписи времени p_time1 = myfont.render(" Секунд", 10, (30, 20, 60)) screen.blit(p_time1, (1115, 20)) # Отрисовка надписи времени otladka() if death == True: #run = False record = True screen.blit(string3, (0, 70)) # Если умер if r1 == True: soundlose.play(0) r1 == False if record == True: if fu == "2": f = open('Результаты.txt', 'a') f.write('{' + "Fred " + str(time1) + '},') f.close record = False print('{' + "Fred " + str(time1) + '},') if fu == "1": f = open('Результаты.txt', 'a') f.write('{' + "ViR " + str(time1) + '},') f.close record = False print('{' + "ViR " + str(time1) + '},') else: f = open('Результаты.txt', 'a') f.write('{' + fu + " " + str(time1) + '},') f.close record = False print('{' + fu + " " + str(time1) + '},') death = False else: screen.blit(string4, (0, 70)) # Если жив pg.draw.rect(screen, (60,200,50), (sx,sy,width,height)) #враг pg.draw.rect(screen, (30,10,70), (sx1,sy1,width,height)) #враг 1 pg.draw.rect(screen, (60,50,50), (x,y,width,height)) #игрок win.blit(screen, (0, 0)) pg.display.update() # Обновление экрана clock.tick(fps) # Фпс = 60 pg.quit()
Офлайн
Не дублируйте темы. Лучше от этого не станет.
Офлайн