Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2021, 14:53   #1
Kostra231
Новичок
Джуниор
 
Регистрация: 04.03.2021
Сообщений: 1
По умолчанию помогите пожалуйста,я не могу сделать стрельбу в разные стороны,я новичок в python,и надеюсь на помощь))

вот сама игра,тут и изображения и сам код

import pygame
import random
import time
import math
from os import path

img_dir = path.join(path.dirname(__file__), 'img1')
snd_dir = path.join(path.dirname(__file__), 'snd1')

w = 1300
h = 680
FPS = 60
a = -10
b = 15
x = 10
y = 10

# Задаем цвета
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

# Создаем игру и окно
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((w, h))
pygame.display.set_caption("Битва за землю")
clock = pygame.time.Clock()


class Player(pygame.sprite.Sprite):

def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.transform.scale(player_img, (50, 50))
self.image.set_colorkey(WHITE)
self.rect = self.image.get_rect()
self.rect.centerx = w - 400
self.rect.bottom = h - 400
self.speedx = 0

def update(self):
self.speedx = 0
mouse = pygame.mouse.get_pressed()
keystate = pygame.key.get_pressed()
if keystate[pygame.K_a]:
self.image = pygame.transform.rotate(player_img, 90)
self.image.set_colorkey(WHITE)
self.speedx = -2
self.rect.x += self.speedx
if keystate[pygame.K_d]:
self.image = pygame.transform.rotate(player_img, -90)
self.image.set_colorkey(WHITE)
self.speedx = 3
self.rect.x += self.speedx
self.rect.y += self.speedx
if keystate[pygame.K_w]:
self.image = pygame.transform.rotate(player_img, 360)
self.image.set_colorkey(WHITE)
self.speedx = 3
if keystate[pygame.K_s]:
self.image = pygame.transform.rotate(player_img, 180)
self.image.set_colorkey(WHITE)
self.speedx = -3
self.rect.y -=self.speedx


def shoot(self):
bullet = Bullet(self.rect.centerx, self.rect.centery)
all_sprites.add(bullet)
bullets.add(bullet)
shoot_sound.play()

class Mob(pygame.sprite.Sprite):

def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.transform.scale(mob1_img, (100, 100))
self.image.set_colorkey(BLACK)
self.rect = self.image.get_rect()
self.rect.x = random.randrange(w - self.rect.width)
self.rect.y = random.randrange(h - self.rect.height)
self.rectx = random.randrange(90, 270)
self.recty = random.randrange(270, 360)
self.speedy = random.randrange(-8, 8)
self.speedx = random.randrange(-3, 3)

def update(self):
self.rect.x += self.speedx
self.rect.y += self.speedy
if self.rect.top > h + 10 or self.rect.left < -25 or self.rect.right > w + 20:
self.rect.x = random.randrange(w - self.rect.width)
self.rect.y = random.randrange(h - self.rect.height)
self.rect.x = random.randrange(180, 270)
self.rect.y = random.randrange(270, 360)
self.speedy = random.randrange(-8, 8)

class Bullet(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.transform.scale(bullet_img, (10, 30))
self.image.set_colorkey(BLACK)
self.rect = self.image.get_rect()
self.rect.bottom = y
self.rect.bottom = x
self.rect.centerx = x
self.rect.centery = y
self.speedx = 0
self.speedy = -10

def update(self):
self.rect.x += self.speedx
self.rect.y += self.speedy
# убить, если он заходит за верхнюю часть экрана
if self.rect.bottom < 0:
self.kill()

background = pygame.image.load(path.join(img_dir , "bg.jpg")).convert()
background_rect = background.get_rect()
player_img = pygame.image.load(path.join(img_dir , "sprite1.png")).convert()
bullet_img = pygame.image.load(path.join(img_dir , "bullet.png")).convert()
mob1_img = pygame.image.load(path.join(img_dir , "mob1.png")).convert()
# Загрузка мелодий игры
shoot_sound = pygame.mixer.Sound(path.join(snd_di r, 'piw1.mp3'))

all_sprites = pygame.sprite.Group()
player = Player()
mobs = pygame.sprite.Group()
bullets = pygame.sprite.Group()
all_sprites.add(player)
for i in range(8):
m = Mob()
all_sprites.add(m)
mobs.add(m)

# Цикл игры
running = True
while running:
# Держим цикл на правильной скорости
clock.tick(FPS)
# Ввод процесса (события)
for event in pygame.event.get():
# проверка для закрытия окна
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
player.shoot()



# Обновление
all_sprites.update()

hits = pygame.sprite.groupcollide(mobs, bullets, True, True)
for hit in hits:
m = Mob()
all_sprites.add(m)
mobs.add(m)

# Проверка, не ударил ли моб игрока
hits = pygame.sprite.spritecollide(player, mobs, False)
if hits:
running = False

# Рендеринг
screen.fill(BLACK)
screen.blit(background, background_rect)
all_sprites.draw(screen)
# После отрисовки всего, переворачиваем экран
pygame.display.flip()

pygame.quit()
Вложения
Тип файла: rar Битва за землю.rar (524.4 Кб, 0 просмотров)

Последний раз редактировалось Kostra231; 04.03.2021 в 14:59.
Kostra231 вне форума Ответить с цитированием
Старый 05.03.2021, 18:02   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

а потом ещё прикрутить фичу, чтоб за угол стрелять...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста помогите, я новичок. SanYoka998 Общие вопросы по Java, Java SE, Kotlin 2 13.12.2017 06:54
не могу сделать web страницу под разные мониторы subbota HTML и CSS 4 06.08.2010 12:05
Очень срочно критически мало времени Пожалуйста, очень надеюсь на вашу помощь. Задачки на Паскале VADOS2009-1 Помощь студентам 0 03.06.2009 00:00
помогите пожалуйста,не могу сделать.срочняк! дайкири Паскаль, Turbo Pascal, PascalABC.NET 4 10.01.2009 16:43
Народ,помогите пожалуйста.Объект и иерархию не могу сделать KirILLA90 Помощь студентам 1 18.12.2008 20:09