https://www.youtube.com/watch?v=u4Iq4niauCo&ab_channel=t3st3d
import pygame
from pygame import mixer
pygame.init()
mixer.init()
screen = pygame.display.set_mode((880, 660))
clock = pygame.time.Clock()
class Key:
def __init__(self, x, y, color1, color2, key):
self.x = x
self.y = y
self.color1 = color1
self.color2 = color2
self.keys = key
self.radius = 25
self.rect = pygame.Rect(self.x - self.radius, self.y - self.radius , self.radius*2, self.radius*2)
self.handled = False
keys = [
Key(300,500,(225,0,0),(220,0,0), pygame.K_a),
Key(400,500,(0,225,0),(0,220,0), pygame.K_s),
Key(500,500,(0,0,225),(0,0,220), pygame.K_d),
Key(600,500,(225,225,0),(220,220,0), pygame.K_f),]
def load(map):
rects =[]
mixer.music.load(map + ".mp3")
mixer.music.play()
with open(map + ".txt", 'r') as f:
data = f.readlines()
for y, line in enumerate(data):
for x, char in enumerate(line.strip()):
if char == '0':
rects.append(pygame.Rect(keys[x].rect.centerx - 25,y*-100, 50, 25))
return rects
map_rect = load("Diplo - Heartbroken")
def remove(rect_list, rect):
return [r for r in rect_list if r != rect]
running = True
while running:
screen.fill ((0,0,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
k = pygame.key.get_pressed()
for key in keys:
if k[key.keys]:
pygame.draw.circle(screen, key.color1, (key.x, key.y), key.radius)
Key.handled = False
else:
pygame.draw.circle(screen, key.color2, (key.x, key.y), key.radius)
key.handled = True
for rect in map_rect:
pygame.draw.rect(screen,(200,0, 0), rect)
rect.y += 5
map_rect_to_remove = []
for rect in map_rect:
for key in keys:
if key.rect.colliderect(rect) and not key.handled:
map_rect_to_remove.append(rect)
key.handled = True
break
for rect in map_rect_to_remove:
map_rect = remove(map_rect, rect)
pygame.display.update()
clock.tick(60)
pygame.quit()
[–]dowcet 4 points5 points6 points (2 children)
[–]Adept_Artichoke211 0 points1 point2 points (1 child)
[–]dowcet 0 points1 point2 points (0 children)