URL
https://algorithm.joho.info/programming/python/pygame-windows-option/
import pygame
from pygame.locals import *
import sys
def main():
pygame.init()
screen = pygame.display.set_mode((300, 200))
pygame.display.set_caption("GAME")
font = pygame.font.Font(None, 55)
while (1):
screen.fill((0,0,0))
text = font.render("TEST", True, (255,255,255))
screen.blit(text, [20, 100])
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if __name__ == "__main__":
main()
URL
https://algorithm.joho.info/programming/python/pygame-arrow-keyevent/
import pygame
from pygame.locals import *
import sys
def main():
(w,h) = (400,400)
(x,y) = (w/2, h/2)
pygame.init()
pygame.display.set_mode((w, h), 0, 32)
screen = pygame.display.get_surface()
while (1):
pressed_key = pygame.key.get_pressed()
if pressed_key[K_LEFT]:
x-=1
if pressed_key[K_RIGHT]:
x+=1
if pressed_key[K_UP]:
y-=1
if pressed_key[K_DOWN]:
y+=1
pygame.display.update()
pygame.time.wait(30)
screen.fill((0, 20, 0, 0))
pygame.draw.circle(screen, (0, 200, 0), (x, y), 5)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
sys.exit()
if __name__ == "__main__":
main()
URL
https://algorithm.joho.info/programming/python/pygame-pong/
import pygame
from pygame.locals import *
import sys
def calc_ball(ball_x, ball_y, ball_vx, ball_vy, bar1_x, bar1_y, bar2_x, bar2_y):
if ball_x <= bar1_x + 10.:
if ball_y >= bar1_y - 7.5 and ball_y <= bar1_y + 42.5:
ball_x = 20.
ball_vx = -ball_vx
if ball_x >= bar2_x - 15.:
if ball_y >= bar2_y - 7.5 and ball_y <= bar2_y + 42.5:
ball_x = 605.
ball_vx = -ball_vx
if ball_x < 5.:
ball_x, ball_y = 320., 232.5
elif ball_x > 620.:
ball_x, ball_y = 307.5, 232.5
if ball_y <= 10.:
ball_vy = -ball_vy
ball_y = 10.
elif ball_y >= 457.5:
ball_vy = -ball_vy
ball_y = 457.5
return ball_x, ball_y, ball_vx, ball_vy
def calc_ai(ball_x, ball_y, bar2_x, bar2_y):
dy = ball_y - bar2_y
if dy > 80: bar2_y += 20
elif dy > 50: bar2_y += 15
elif dy > 30: bar2_y += 12
elif dy > 10: bar2_y += 8
elif dy < -80: bar2_y -= 20
elif dy < -50: bar2_y -= 15
elif dy < -30: bar2_y -= 12
elif dy < -10: bar2_y -= 8
if bar2_y >= 420.: bar2_y = 420.
elif bar2_y <= 10.: bar2_y = 10.
return bar2_y
def calc_player(bar1_y, bar1_dy):
bar1_y += bar1_dy
if bar1_y >= 420.: bar1_y = 420.
elif bar1_y <= 10. : bar1_y = 10.
return bar1_y
def calc_score(ball_x, score1, score2):
if ball_x < 5.:
score2 += 1
if ball_x > 620.:
score1 += 1
return score1, score2
def event(bar1_dy):
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_UP:
bar1_dy = -10
elif event.key == K_DOWN:
bar1_dy = 10
elif event.type == KEYUP:
if event.key == K_UP:
bar1_dy = 0.
elif event.key == K_DOWN:
bar1_dy = 0.
return bar1_dy
def main():
bar1_x, bar1_y = 10. , 215.
bar2_x, bar2_y = 620., 215.
ball_x, ball_y = 307.5, 232.5
bar1_dy, bar2_dy = 0. , 0.
ball_vx, ball_vy = 250., 250.
score1, score2 = 0,0
ball_r = 7
pygame.init()
screen = pygame.display.set_mode((640,480),0,32)
pygame.display.set_caption("PONG")
clock = pygame.time.Clock()
font = pygame.font.SysFont(None,40)
back = pygame.Surface((640,480))
background = back.convert()
screen.fill((0,0,0))
bar = pygame.Surface((10,50))
bar1 = bar.convert()
bar1.fill((255,255,255))
bar2 = bar.convert()
bar2.fill((255,255,255))
circ_sur = pygame.Surface((20,20))
pygame.draw.circle(circ_sur,(255,255,255),(ball_r, ball_r), ball_r)
ball = circ_sur
ball.set_colorkey((0,0,0))
while (1):
screen.blit(background,(0,0))
pygame.draw.aaline(screen,(255,255,255),(330,5),(330,475))
screen.blit(bar1,(bar1_x,bar1_y))
screen.blit(bar2,(bar2_x,bar2_y))
screen.blit(ball,(ball_x, ball_y))
screen.blit(font.render(str(score1), True,(255,255,255)),(250.,10.))
screen.blit(font.render(str(score2), True,(255,255,255)),(400.,10.))
bar1_dy = event(bar1_dy)
bar1_y = calc_player(bar1_y,bar1_dy)
time_passed = clock.tick(30)
time_sec = time_passed / 1000.0
ball_x += ball_vx * time_sec
ball_y += ball_vy * time_sec
score1, score2 = calc_score(ball_x, score1, score2)
bar2_y = calc_ai(ball_x, ball_y, bar2_x, bar2_y)
ball_x, ball_y, ball_vx, ball_vy = calc_ball(ball_x, ball_y, ball_vx, ball_vy, bar1_x, bar1_y, bar2_x, bar2_y)
pygame.display.update()
if __name__ == "__main__":
main()