Ich habe mir mal vorgenommen, etwas mit Pygame zu machen,
und da habe ich mir gedacht, dass ein Spaceshooter ähnliches
Spiel ein guter Anfang wäre. Doch beim Bewegen des Player-Bildes
treten kleine "Bugs" auf...
Wenn man den Spieler nach Oben oder nach Links bewegt, dann aber
wieder die Bewegungstaste loslässt, bewegt sich das Bild trotzdem weiter
bis an den Bildschirmrand. Aber etwas derartiges steht nicht in meinem Code :K
Hier mal die Game - Classe:
Code: Alles auswählen
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
import pygame
from Utils import *
from Player import *
from Zombie import *
from Bullet import *
from pygame.locals import *
class Game():
def __init__(self):
# Init Game Window
pygame.init()
self.screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("PyZombie Invasion - by blue leopard")
pygame.display.set_icon(getImage("Thumbnail.png"))
# ---
self.clock = pygame.time.Clock()
self.isRunning = True
# ---
self.isKeyPressed_Up = False
self.isKeyPressed_Down = False
self.isKeyPressed_Left = False
self.isKeyPressed_Right = False
# ---
self.loadComponents()
def loadComponents(self):
self.background = getImage("Background.png")
self.player = Player()
def update(self):
if self.isKeyPressed_Up:
self.player.go(1)
if self.isKeyPressed_Down:
self.player.go(2)
if self.isKeyPressed_Left:
self.player.go(3)
if self.isKeyPressed_Right:
self.player.go(4)
self.player.update()
def draw(self):
self.screen.blit(self.background, self.background.get_rect())
self.player.draw(self.screen)
def launch(self):
while self.isRunning:
self.clock.tick(60)
self.screen.fill((0, 0, 0))
for event in pygame.event.get():
if event.type == QUIT:
self.isRunning = False
sys.exit()
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
self.isRunning = False
sys.exit()
if event.key == K_UP:
self.isKeyPressed_Up = True
if event.key == K_DOWN:
self.isKeyPressed_Down = True
if event.key == K_LEFT:
self.isKeyPressed_Left = True
if event.key == K_RIGHT:
self.isKeyPressed_Right = True
if event.type == KEYUP:
if event.key == K_UP:
self.isKeyPressed_Up = False
if event.key == K_DOWN:
self.isKeyPressed_Down = False
if event.key == K_LEFT:
self.isKeyPressed_Left = False
if event.key == K_RIGHT:
self.isKeyPressed_Right = False
self.update()
self.draw()
pygame.display.flip()
if __name__ == "__main__":
game = Game()
game.launch()
Code: Alles auswählen
#-*- coding:utf-8 -*-
import pygame
from Utils import *
from pygame.locals import *
class Player():
def __init__(self):
self.image = getImage("Player.png")
self.position = self.image.get_rect()
# ---
self.velocityX = 0.0
self.velocityY = 0.0
def update(self):
self.position.x += self.velocityX
self.position.y += self.velocityY
self.velocityX *= 0.95
self.velocityY *= 0.95
def draw(self, screen):
screen.blit(self.image, self.position)
def go(self, direction):
if direction == "up" or direction == 1:
self.velocityY -= 0.8
if direction == "down" or direction == 2:
self.velocityY += 0.8
if direction == "left" or direction == 3:
self.velocityX -= 0.8
if direction == "right" or direction == 4:
self.velocityX += 0.8
gemacht, und da hat das auf genau die gleiche weise funktioniert. Und naja, bewegt
man den Spieler nach Unten oder Rechts, dann bleibt er auch nach kurzer Zeit wieder stehen...
Hat jemand eine Idee, woran das liegen könnte?
Hier ist nochmal das ganze bisherige "Spiel" inklusive aktuell benötigte Grafiken:
http://dl.dropbox.com/u/7887259/pyzombi ... em-001.zip
Zum ausführen wird Python 2.7.1+ und natürlich Pygame benötigt.