Browse Source

Fertiges PONG-Spiel (Beta-Version zu finden unter "Tag2_EigenesSpiel.py")

master
Jonka Winkle 5 years ago
parent
commit
fbffbfe332
2 changed files with 250 additions and 0 deletions
  1. 159
    0
      Pong.py
  2. 91
    0
      Tag2_EigenesSpiel.py

+ 159
- 0
Pong.py View File

@@ -0,0 +1,159 @@
import pygame
import random
import time

running = False
gameover = False


def initScreen():
global black, red, white, screen, width, height
width = 640
height = 400
size = (width, height)

screen = pygame.display.set_mode(size)

white = (255, 255, 255)
black = (0,0,0)
red = (255,0,0)

pygame.display.set_caption("PONG!")



def initImage():
global image, image_rect
image = pygame.image.load("seehofer.png")
image_rect = image.get_rect()
image_rect.centerx = width/2
image_rect.centery = height/2
global size_image
size_image = image.get_rect().size


def initImageMovement():
random.seed(a=None, version=2)
rand_x = random.randint(1, 4)
random.seed(a=None, version=2)
rand_y = random.randint(1, 4)
global move_vector
move_vector = [ rand_x, rand_y ]

class Rectangle(pygame.Rect):
def __init__(self, rect_width, rect_height):
self.width = rect_width
self.height = rect_height
self.centerx = width/2
self.centery = height - (rect_height/2)
self.speed_x = 0


def initRedRectangle():
global red_rect
red_rect = Rectangle(100, 12)


def doMovement():
time.sleep(0.01)
image_rect.centerx += move_vector[0]
image_rect.centery += move_vector[1]

if size_image[0]/2 <= image_rect.centerx <= width-(size_image[0]/2) and size_image[1]/2 <= image_rect.centery <= height-(size_image[1]/2):

pass
else:
if image_rect.centerx >= width-size_image[0]/2 or image_rect.centerx <= size_image[0]/2:
# CASE 1: image bounces on the right/left wall
move_vector[0] = -(move_vector[0])
elif image_rect.centery <= size_image[1]/2:
# CASE 2: image bounces on the upper wall
move_vector[1] = -(move_vector[1])
elif image_rect.centery >= height-size_image[1]/2:
# CASE 3: image is about to pass the lower border of screen
if image_rect.colliderect(red_rect):
# CASE 3.1: image touches the red balk
move_vector[1] = -(move_vector[1])
if not image_rect.colliderect(red_rect):
# CASE 3.2: image does not touch the red balk
showGameOver()
global gameover
gameover = True

else:
# CASE 4: image bounces in one of the upper corners (right or left)
move_vector[0] = -(move_vector[0])
move_vector[1] = -(move_vector[1])

def moveRedBalk():
if (red_rect.width/2) <= red_rect.centerx <= width-(red_rect.width/2):
red_rect.centerx += red_rect.speed_x * 3
elif red_rect.centerx <= (red_rect.width/2) or red_rect.centerx >= width-(red_rect.width/2):
red_rect.speed_x = -(red_rect.speed_x)
red_rect.centerx += red_rect.speed_x * 3

def showGameOver():
global text, gameover_rect
font = pygame.font.Font(None, 38)
text = font.render("Game Over!", 1, white)
gameover_rect = text.get_rect()

gameover_rect.centerx = width/2
gameover_rect.centery = height/2



def input():
for event in pygame.event.get():
if event.type == pygame.QUIT:
return
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
return False
if event.key == pygame.K_RIGHT:
red_rect.speed_x = 1
if event.key == pygame.K_LEFT:
red_rect.speed_x = -1
if event.type == pygame.KEYUP:
red_rect.speed_x = 0
return True



def update():
doMovement()
moveRedBalk()



def draw():
screen.fill(black)
if gameover:
screen.blit(text, gameover_rect)
else:
screen.blit(image, image_rect)
pygame.draw.rect(screen, red, red_rect)
pygame.display.flip()



#------------- MAIN PROGRAMM ----------------

pygame.init()
initScreen()
initImage()
initImageMovement()
initRedRectangle()
running = True


#---------------- GAME LOOP ------------------

while running:
running = input()
update()
draw()





+ 91
- 0
Tag2_EigenesSpiel.py View File

@@ -0,0 +1,91 @@
import pygame

def initScreen():
global width, height, size
width = 820
height = 640
size = (width, height)

global red, black
red = (255, 0, 0, 0)
black = (0, 0, 0, 0)

def initGame():
global Rectangle
Rectangle = initRectangle()
global running
running = False

def initSign():
global image, image_rect
image = pygame.image.load("seehofer.png")
image_rect = image.get_rect()

class Rectangle(pygame.Rect):
def __init__(self, x, y, width, height):
self.x = x
self.y = y
self.width = width
self.height = height

self.speed_l = 0
self.speed_r = 0

def initRectangle():
x = 0
y = 620
width = 100
height = 20

global My_Rect
My_Rect = Rectangle(x, y, width, height)
return My_Rect

def input():
for event in pygame.event.get():
if event.type == pygame.QUIT:
return False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
return False
if event.key == pygame.K_LEFT:
My_Rect.speed_l = 1
if event.key == pygame.K_RIGHT:
My_Rect.speed_r = 1
if event.type == pygame.KEYUP:
Rectangle.speed_left = 0
Rectangle.speed_right = 0

return True

def update():
if(0 <= Rectangle.x < width):
Rectangle.x += My_Rect.speed_r * 3
Rectangle.x += My_Rect.speed_l * 3

image_rect.x = 100
image_rect.y = 50

def draw():
screen.fill(black)
screen.blit(image, image_rect)
pygame.draw.rect(screen, red, Rectangle)
pygame.display.flip()


# --------- Start of Main-Code ------------
running = False

pygame.init()
initScreen()
initGame()
initSign()
screen = pygame.display.set_mode(size)

running = True


while running == True:
running = input()
update()
draw()

Loading…
Cancel
Save