Apr-18-2019, 03:15 PM
I am currently struggling through a class and have an EXTREMELY LIMITED understanding of what I am doing thus for so any detailed help (layman terms please) will be greatly appreciated
I need to implement the following and have been unsuccessful thus far: "after each 5 balls that you catch, you should increase the number of balls that are falling at a time. Each new ball that gets created should have a velocity set to a random integer (randint) between the initial velocity (20 in the original tutorial) and the current max velocity. Hint: You can create an array of dictionaries and iterate over that list to update/change all objects in a dictionary."
I need to implement the following and have been unsuccessful thus far: "after each 5 balls that you catch, you should increase the number of balls that are falling at a time. Each new ball that gets created should have a velocity set to a random integer (randint) between the initial velocity (20 in the original tutorial) and the current max velocity. Hint: You can create an array of dictionaries and iterate over that list to update/change all objects in a dictionary."
# Initializing pygame + some important variables
import pygame
from random import randint
pygame.init()
score = 0
total = 0
myfont = pygame.font.SysFont('monospace', 50)
# Making dictionaries with settings for everything.
display = {
"width": 800,
"height": 600
}
#Increased Paddle Velocity
paddle = {
"width": 200,
"height": 20,
"x": 300,
"y": 580,
"velocity": 40
}
ball = {
"radius": 15,
"y": 30,
"x": randint(0, display["width"]),
"velocity": 20
}
# Launching the window, setting it to the dimensions of the `display` dictionary.
win = pygame.display.set_mode((display["width"], display["height"]))
# The Main game loop
while True:
pygame.time.delay(100)
win.fill((255, 255, 255))
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
paddle["x"] -= paddle["velocity"]
if keys[pygame.K_RIGHT]:
paddle["x"] += paddle["velocity"]
if ball["y"] + ball["radius"] >= paddle["y"]:
if ball["x"] > paddle["x"] and ball["x"] < paddle["x"] + paddle["width"]:
#Increase ball speed
ball['velocity'] += 3
score += 1
total += 1
ball["y"] = ball["radius"]
ball["x"] = randint(0, display["width"])
ball["y"] += ball["velocity"]
pygame.draw.circle(win, (0, 0, 255), (ball["x"], ball["y"]), ball["radius"])
pygame.draw.rect(win, (255, 0, 0), (paddle["x"], paddle["y"], paddle["width"], paddle["height"]))
#LOSE GAME
if total - score >= 10:
break
textsurface = myfont.render("score: {0}/{1}".format(score, total), False, (0, 0, 0))
win.blit(textsurface, (10, 10))
pygame.display.update()
pygame.quit()
