Sideways/Shooter Python Crash Course
Verfasst: Donnerstag 13. Juni 2019, 12:26
Hi brauche dringend eure hilfe und zwar hänge ich an der aufgabe vom buch Python Crash Course fest
Undzwar gehen wen ich auf space drücke bewegen sich nicht die bälle nach rechts sondern bleiben einfach bei mir an der linken seiten stehen
ich hoffe ihr könnt mir helfen
mfg
fakhro
Code: Alles auswählen
import pygame
from settings import Settings
import sideways_function as gf
from Sideways_ship import Ship
from pygame.sprite import Group
def run_game():
#Initaliz pygame and creat a screen object.
pygame.init()
ai_settings = Settings()
screen = pygame.display.set_mode((ai_settings.screen_wight,
ai_settings.screen_height))
pygame.display.set_caption("Ship Game")
ship = Ship(ai_settings, screen)
bullets = Group()
while True:
gf.check_events(ai_settings, screen, ship, bullets)
ship.update()
gf.update_screen(ai_settings, screen, ship, bullets)
run_game()
Code: Alles auswählen
import pygame
from pygame.sprite import Sprite
class Bullet(Sprite):
def __init__(self, ai_settings, screen, ship):
super(Bullet, self).__init__()
self.screen = screen
self.rect = pygame.Rect(0, 0, ai_settings.bullet_widht,
ai_settings.bullet_height)
self.rect.left = ship.rect.left
self.rect.top = ship.rect.top
self.color = ai_settings.bullet_color
self.speed_factor = ai_settings.bullet_speed_factor
self.y = float(self.rect.y)
def update(self):
self.y -= self.speed_factor
self.right = self.y
def draw_bullet(self):
pygame.draw.rect(self.screen, self.color, self.rect)
Code: Alles auswählen
import pygame
class Ship():
def __init__(self, ai_settings, screen):
self.screen = screen
self.ai_settings = ai_settings
# load image
self.image = pygame.image.load('Image/rocket.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
#Set the ship to the right position
self.rect.left = self.screen_rect.left
self.rect.bottom = self.screen_rect.bottom
#Movement flags
self.moving_down = False
self.moving_up = False
self.bottom = float(self.rect.bottom)
def update(self):
if self.moving_up and self.rect.top > 0:
self.bottom -= self.ai_settings.ship_speed_factor
if self.moving_down and self.rect.bottom < self.screen_rect.bottom:
self.bottom += self.ai_settings.ship_speed_factor
self.rect.bottom = self.bottom
def blitme(self):
self.screen.blit(self.image, self.rect)
Code: Alles auswählen
import sys
import pygame
from sideways_bullets import Bullet
def check_keydowns_events(event, ai_settings, screen, ship, bullets):
if event.key == pygame.K_UP:
ship.moving_up = True
elif event.key == pygame.K_DOWN:
ship.moving_down = True
elif event.key == pygame.K_SPACE:
new_bullet = Bullet(ai_settings, screen, ship)
bullets.add(new_bullet)
def check_keyup_events(event, ship):
if event.key == pygame.K_UP:
ship.moving_up = False
elif event.key == pygame.K_DOWN:
ship.moving_down = False
def check_events(ai_settings, screen, ship, bullets):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
check_keydowns_events(event, ai_settings, screen, ship, bullets)
elif event.type == pygame.KEYUP:
check_keyup_events(event, ship)
def update_screen(ai_settings, screen, ship, bullets):
screen.fill(ai_settings.bg_color)
ship.blitme()
for bullet in bullets.sprites():
bullet.draw_bullet()
pygame.display.flip()
ich hoffe ihr könnt mir helfen
mfg
fakhro