Skip to main content

Simple Pygame wrap for small kids

Project description

Простая обёртка pygame для детей

Blank. Empty window

from pioneergame import Window

my_window = Window(1200, 700, 'my black window')  # создаём главное окно

while True:  # бесконечный цикл игры
    my_window.fill('black')  # заполнение экрана чёрным

    my_window.update(60)  # обновление экрана с частотой 60 кадров в секунду

Drawing simple objects

figures

from pioneergame import Window, Rect, Circle

my_window = Window(1200, 700, 'my black window')  # создаём главное окно

# создание синего прямоугольника с шириной 100 и высотой 50
block = Rect(my_window, x=10, y=40, width=100, height=50, color='blue')

# создание оранжевого квадрата размером 60 на 60, который потом будем двигать
moving_square = Rect(my_window, x=100, y=200, width=60, height=60, color='orange')

# создание красного круга с радиусом 20, который тоже будем двигать
moving_circle = Circle(my_window, x=1000, y=50, radius=20, color='red')

# создание серого кольца с радиусом 80 и толщиной стенки 5
bublik = Circle(my_window, x=500, y=350, radius=80, color='grey', thickness=5)

while True:  # бесконечный цикл игры
    my_window.fill('black')  # заполнение экрана чёрным

    block.draw()  # отрисовка прямоугольника
    moving_square.draw()  # отрисовка квадрата
    moving_circle.draw()  # отрисовка круга
    bublik.draw()

    # если правая сторона квадрата находится левее чем правая граница экрана, то мы двигаем квадрат вправо
    if moving_square.right < my_window.right:
        moving_square.x += 5  # движение квадрата вправо на 1 пиксель

    moving_circle.x -= 1  # движение круга в лево
    moving_circle.y += 1  # движение круга вниз

    my_window.update(60)  # обновление экрана с частотой 60 кадров в секунду

Keyboard and text

keyboard

from pioneergame import Window, Label

my_window = Window(1200, 700, 'my black window')  # создаём главное окно

# создание текста белого цвета
my_text = Label(my_window, x=300, y=350, text='Нажми стрелочку вправо, влево, вверх или вниз', color='white')

while True:  # бесконечный цикл игры
    my_window.fill('black')  # заполнение экрана чёрным

    my_text.draw()  # отрисовка текста

    if my_window.get_key('left'):  # если нажата стрелочка влево
        my_text.set_text('была нажата стрелочка влево')  # установка нового текста
    if my_window.get_key('right'):  # если нажата стрелочка вправо
        my_text.set_text('была нажата стрелочка вправо')
    if my_window.get_key('up'):  # если нажата стрелочка вверх
        my_text.set_text('была нажата стрелочка вверх')
    if my_window.get_key('down'):  # если нажата стрелочка вниз
        my_text.set_text('была нажата стрелочка вниз')

    my_window.update(60)  # обновление экрана с частотой 60 кадров в секунду

Fireworks

fireworks

from pioneergame import Window, explode, explosion_update

my_window = Window(1200, 700, 'my black window')  # создаём главное окно

while True:  # бесконечный цикл игры
    my_window.fill('black')  # заполнение экрана чёрным

    if my_window.get_mouse_button('left'):  # если была нажата левая кнопка мыши
        explode(my_window, pos=my_window.mouse_position(), size=5, color='orange')

    explosion_update()  # обработка всех взрывов

    my_window.update(60)  # обновление экрана с частотой 60 кадров в секунду

Example. DVD screen

dvd

from pioneergame import Window, Label

window = Window(1024, 768, 'DVD test')

dvd = Label(window, 10, 10, 'DVD', 'grey', font='Impact', size=70, italic=True)
state = Label(window, 10, 10, 'state: IDLE', 'grey', italic=True)

dx, dy = 3, 3

while True:
    window.fill('black')
    dvd.draw()
    state.draw()

    dvd.x += dx
    dvd.y += dy

    if dvd.left < window.left or dvd.right > window.right:
        dx *= -1
    if dvd.top < window.top or dvd.bottom > window.bottom:
        dy *= -1

    window.update(80)

Ping Pong

pong

from pioneergame import Window, Circle, Rect, Label

window = Window(1024, 768)
fps = 80

pad1 = Rect(window, 50, 20, 20, 200, color='grey')
text1 = Label(window, 100, 10, text='0', color='darkgray', size=50)
score1 = 0

pad2 = Rect(window, 954, 20, 20, 200, color='grey')
text2 = Label(window, 900, 10, color='darkgray', size=50)
score2 = 0

ball = Circle(window, 100, 100, radius=10, color='grey')
ball_speed = 3

dx = ball_speed
dy = ball_speed

while True:
    window.fill('black')

    pad1.draw()
    text1.draw()
    text1.set_text(score1)

    pad2.draw()
    text2.draw()
    text2.set_text(score2)

    ball.draw()

    ball.x += dx
    ball.y += dy

    if ball.bottom > window.bottom:
        dy = -dy
    if ball.top < window.top:
        dy = -dy

    if ball.right > window.right:
        score1 = score1 + 1
        ball.x = 512
        ball.y = 344
    if ball.left < window.left:
        score2 = score2 + 1
        ball.x = 512
        ball.y = 344

    if window.get_key('w') and pad1.top > window.top:
        pad1.y -= 5
    if window.get_key('s') and pad1.bottom < window.bottom:
        pad1.y += 5

    if window.get_key('up') and pad2.top > window.top:
        pad2.y -= 5
    if window.get_key('down') and pad2.bottom < window.bottom:
        pad2.y += 5

    if ball.colliderect(pad1):
        dx = ball_speed
    if ball.colliderect(pad2):
        dx = -ball_speed

    window.update(fps)

BattleCity

pong

from pioneergame import Window, Label
from pioneergame.presets import Player, Map
from pioneergame.sprites import green_tank, yellow_tank, brick_sprite, bush_sprite, metal_sprite

window = Window(1050, 900)
fps = 80

player1 = Player(window, 500, 800, 50, 50, green_tank)


player2 = Player(window, 500, 45, 50, 50, yellow_tank)

game_over_text = Label(window, 0, 0, 'Player0 WIN!', 'red', size=50)
game_over_text.center = window.center

# W - unbreakable wall
# $ - bush
# # - brick
# @ - metal block (unbreakable)
charmap = ['WWWWWWWWWWWWWWWWWWWWW',
           'W.......$@.@$.......W',
           'W.$$.....$.$.....$$.W',
           'W.##..$$.....$$..##.W',
           'W.##..##.#.#.##..##.W',
           'W.###.##.....##.###.W',
           'W.##..##.....##..##.W',
           'W$.......#.#.......$W',
           'W@$.$@$$.#@#.$$@$.$@W',
           'W$.......#.#.......$W',
           'W.##..##.....##..##.W',
           'W.##.###.....###.##.W',
           'W.##..##.#.#.##..##.W',
           'W.##..##.....##..##.W',
           'W.##..$$.....$$..##.W',
           'W.$$.....$.$.....$$.W',
           'W.......$@.@$.......W',
           'WWWWWWWWWWWWWWWWWWWWW']

map = Map(window, charmap, brick_sprite, metal_sprite, bush_sprite)

while True:
    window.fill('black')

    player1.draw()
    player1.collide_map(map)
    player1.collide_player(player2)

    player2.draw()
    player2.collide_map(map)
    player2.collide_player(player1)

    map.draw()

    if player1.hp <= 0:
        game_over_text.set_text('Player2 WIN!')
        game_over_text.draw_box()
        game_over_text.draw()
    if player2.hp <= 0:
        game_over_text.set_text('Player1 WIN!')
        game_over_text.draw_box()
        game_over_text.draw()

    if player1.hp > 0:
        if window.get_key('w'):
            player1.go('up')
        elif window.get_key('s'):
            player1.go('down')
        elif window.get_key('a'):
            player1.go('left')
        elif window.get_key('d'):
            player1.go('right')

        if window.get_key('space'):
            player1.shoot()

    if player2.hp > 0:
        if window.get_key('up'):
            player2.go('up')
        elif window.get_key('down'):
            player2.go('down')
        elif window.get_key('left'):
            player2.go('left')
        elif window.get_key('right'):
            player2.go('right')

        if window.get_key('right shift'):
            player2.shoot()

    window.update(fps)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pioneergame-0.0.34.tar.gz (196.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pioneergame-0.0.34-py3-none-any.whl (196.2 kB view details)

Uploaded Python 3

File details

Details for the file pioneergame-0.0.34.tar.gz.

File metadata

  • Download URL: pioneergame-0.0.34.tar.gz
  • Upload date:
  • Size: 196.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for pioneergame-0.0.34.tar.gz
Algorithm Hash digest
SHA256 448a67814fb86b70018064ea06e18846311aa86bf3d5c687b6c325857ff5a941
MD5 c8b409c7d96be91a29407991b6804744
BLAKE2b-256 f1710b51e162d721e66c8755fe8174c859dea6063b1da5c46c5b6a37f4574d85

See more details on using hashes here.

File details

Details for the file pioneergame-0.0.34-py3-none-any.whl.

File metadata

  • Download URL: pioneergame-0.0.34-py3-none-any.whl
  • Upload date:
  • Size: 196.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for pioneergame-0.0.34-py3-none-any.whl
Algorithm Hash digest
SHA256 8cc7f88f3afeed8561b52ec381735fd090e85d5640598f0705b63aed37a58632
MD5 37056d05526b2f77856903e06e1f526b
BLAKE2b-256 48fc3447ea737207c8b1eb9e15d43d5d48394829b91fcb6886db0fa453b417c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page