Ejemplo n.º 1
0
    def run_game(self):

        settings = Settings()
        screen = pygame.display.set_mode(
            (settings.screen_width, settings.screen_height))

        scoreboard_1 = ScoreBoard(screen, settings, PlayerSide.LEFT)
        scoreboard_2 = ScoreBoard(screen, settings, PlayerSide.RIGHT)
        screen_rect = screen.get_rect()
        player_one = Player(settings, screen, PlayerSide.LEFT)
        player_two = Player(settings, screen, PlayerSide.RIGHT)
        ball = Ball(screen, settings, PlayerSide.LEFT,
                    (screen_rect.centerx, screen_rect.centery), player_one,
                    player_two)

        box_top = screen_rect.centerx - 25, screen_rect.top + 150, 50, 50
        box_mid = screen_rect.centerx - 25, screen_rect.centery - 25, 50, 50
        box_down = screen_rect.centerx - 25, screen_rect.top + 500, 50, 50
        box_1 = SupriseBox(screen, box_top, (50, 50, 50))
        box_2 = SupriseBox(screen, box_mid, (100, 0, 0))
        box_3 = SupriseBox(screen, box_down, (0, 0, 100))

        while self.run:
            if self.state:

                player_one.update_player(settings, PlayerSide.LEFT, game)
                player_two.update_player(settings, PlayerSide.RIGHT, game)

                gf.check_event(player_one, player_two, ball, game,
                               scoreboard_1, scoreboard_2, box_1, box_2, box_3)

                play_button = Button(screen, ResetQuit.RESTART)
                play_button.prep_msg('Left Player: [SPACE]')
                restart_button = Button(screen, ResetQuit.RESTART)
                restart_button.prep_msg('Press ' R' for Restart')
                quit_button = Button(screen, ResetQuit.QUIT)
                quit_button.prep_msg("Press 'Q' to Quit")

                scoreboard_1.score(PlayerSide.LEFT)
                scoreboard_2.score(PlayerSide.RIGHT)

                ball.ball_position(GameState.START, player_one, player_two,
                                   self.servis, settings, game)

                gf.update_start_screen(screen, settings, player_one,
                                       player_two, ball, play_button,
                                       restart_button, quit_button, game,
                                       scoreboard_1, scoreboard_2)
            else:

                gf.check_event(player_one, player_two, ball, game,
                               scoreboard_1, scoreboard_2, box_1, box_2, box_3)

                gf.check_score(ball, screen, game, scoreboard_1, scoreboard_2,
                               settings, player_one, player_two)
                gf.box_timer(box_1, box_2, box_3)

                player_one.update_player(settings, PlayerSide.LEFT, game)
                player_two.update_player(settings, PlayerSide.RIGHT, game)

                player_one.update_player_height(settings, PlayerSide.LEFT)
                player_two.update_player_height(settings, PlayerSide.RIGHT)

                gf.check_collision_player(ball, PlayerSide.RIGHT, player_two,
                                          player_one, settings)
                gf.check_collision_player(ball, PlayerSide.LEFT, player_two,
                                          player_one, settings)
                gf.check_collision_down_up(ball, screen)

                gf.check_suprise(settings, ball, box_1, box_2, box_3)

                scoreboard_1.score(PlayerSide.LEFT)
                scoreboard_2.score(PlayerSide.RIGHT)

                ball.ball_position(GameState.INGAME, player_one, player_two,
                                   self.servis, settings, game)

                gf.update_screen(screen, settings, player_one, player_two,
                                 ball, scoreboard_1, scoreboard_2, game, box_1,
                                 box_2, box_3)
Ejemplo n.º 2
0
 def __init__(self, home, away, play_by_play=False):
     self._scoreboard = ScoreBoard(home.getTeamName(), away.getTeamName())
     self._hometeam = home
     self._awayteam = away
     self._initposs = random.choice([self._hometeam, self._awayteam])
     self._play_by_play = play_by_play
Ejemplo n.º 3
0
from turtle import Screen
from time import sleep
from player import Player
from walls import Walls
from aliens import AlienManager, UFO
from scoreboard import ScoreBoard
import random

screen = Screen()
screen.setup(width=600, height=600)
screen.bgcolor('black')
screen.tracer(0)

player = Player()
scoreboard = ScoreBoard(player=player)

walls = Walls()

aliens = AlienManager()

screen.listen()
screen.onkey(player.go_left, 'a')
screen.onkey(player.go_right, 'd')
screen.onkey(player.shoot, 'space')


def transpose(li):
    transposed_list = [[row[i] for row in li] for i in range(len(li[0]))]
    return transposed_list

Ejemplo n.º 4
0
from paddle import Paddle
from ball import Ball
from scoreboard import ScoreBoard
import time

screen = Screen()
screen.setup(height=600, width=800)
screen.bgcolor("Black")
screen.title("Pong")
screen.tracer(0)
screen.listen()

rightPaddle = Paddle("right")
leftPaddle = Paddle("left")
ball = Ball()
rightScoreboard = ScoreBoard("right")
leftScoreboard = ScoreBoard("left")
#screen.update()
screen.onkey(leftPaddle.up, "w")
screen.onkey(leftPaddle.down, "s")
screen.onkey(rightPaddle.up, "Up")
screen.onkey(rightPaddle.down, "Down")

game_is_on = True

while game_is_on:
    time.sleep(ball.move_speed)
    screen.update()
    ball.move()

    #collision with wall
Ejemplo n.º 5
0
from turtle import Screen
from paddle import Paddle
from ball import Ball
from scoreboard import ScoreBoard
import time

screen = Screen()
screen.bgcolor("black")
screen.setup(800, 600)
screen.title("Pong")

screen.tracer(0)
paddle = Paddle((350, 0))
paddle2 = Paddle((-350, 0))
ball = Ball()
scoreboard_l = ScoreBoard((350, 260))
scoreboard_r = ScoreBoard((-350, 260))
screen.listen()

screen.onkey(paddle.up, "Up")
screen.onkey(paddle.down, "Down")
screen.onkey(paddle2.up, "w")
screen.onkey(paddle2.down, "s")
game_is_on = True

while game_is_on:
    time.sleep(0.2)
    screen.update()
    ball.move()
    if ball.ycor() > 280 or ball.ycor() < -280:
        ball.bounce_y()
Ejemplo n.º 6
0
from random import randint
from scoreboard import ScoreBoard

screen = Screen()
screen.setup(600, 600)
screen.title("Pong Game")
screen.bgcolor("black")
screen.tracer(0)
end_point=3
# pad init
pad1 = Pad()
pad1.goto(-280, 0)
pad2 = Pad()
pad2.goto(280, 0)
ball = Ball()
scoreboard = ScoreBoard()
# controls
screen.listen()
screen.onkey(pad1.up, "w")
screen.onkey(pad1.down, "s")
screen.onkey(pad2.up, "Up")
screen.onkey(pad2.down, "Down")

# main game while loop
game_is_over = False
while not game_is_over:
    sleep(.01)
    ball.move()
    if ball.xcor() > 295:
        scoreboard.pad1_scores()
        ball.restart()
Ejemplo n.º 7
0
import telegram
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, ReplyKeyboardRemove
from telegram.ext import (Updater, CommandHandler, MessageHandler, Filters,
                          CallbackQueryHandler, ConversationHandler)

logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO)
logger = logging.getLogger(__name__)

from private import TOKEN, TOKEN_TESTING
from scoreboard import ScoreBoard

TESTING = True

scoreboard = ScoreBoard(TESTING)

CURRENT_TRANSACTION = {}
"""
{
    'id':           tg_id of the affected person,
    'value':        change in points,
    'description':  description,
    'can_confirm':  tg_id of person allowed to confirm_cb,
    'confirmed':    False
}
"""

USER_SELECT, VALUE, SIGN, DESCRIPTION, CONFIRM = range(5)

AGREE_TOS, JOIN = range(2)
Ejemplo n.º 8
0
from turtle import Screen
from scoreboard import ScoreBoard
from paddle import Paddle
from ball import Ball
import time

screen = Screen()
screen.bgcolor("black")
screen.title("Pong")
screen.setup(600, 600)
screen.tracer(0)
l_score = ScoreBoard(screen_side="left")
r_score = ScoreBoard(screen_side="right")
l_paddle = Paddle((-280, 0))
r_paddle = Paddle((280, 0))
ball = Ball()

screen.listen()
screen.onkey(l_paddle.go_up, "w")
screen.onkey(l_paddle.go_down, "s")
screen.onkey(r_paddle.go_up, "Up")
screen.onkey(r_paddle.go_down, "Down")

while True:
    time.sleep(ball.ball_speed)
    if ball.xcor() >= 290:
        l_score.update_score()
        ball.refresh(side="right")
    elif ball.xcor() <= -290:
        r_score.update_score()
        ball.refresh(side="left")
Ejemplo n.º 9
0
def game():
    ball_vel = 8
    player_vel = 15
    is_running = True
    player = Paddle((WIDTH//2)-(SIZE*4), HEIGHT-SIZE*3)
    ball = Ball(player.get_rect().centerx, player.get_rect().top - SIZE)
    scoreboard = ScoreBoard()
    clock = pygame.time.Clock()
    bricks = []
    hearts = []

    def make_bricks():
        for i in range(5):
            for j in range(WIDTH//(BRICK_WIDTH+SIZE//2)-2):
                brick_x = (j+1)*(BRICK_WIDTH+SIZE//2) + SIZE
                brick_y = (i+4)*BRICK_HEIGHT*3//2 + SCOREBOARD_HEIGHT
                bricks.append(Brick(brick_x, brick_y, scoreboard.level))
    make_bricks()

    def redraw_window():
        window.fill('black')
        player.draw(window)
        for brick in bricks:
            brick.draw(window)
        ball.draw(window)
        for bullet in player.bullets:
            if bullet.check_out_of_window():
                player.bullets.remove(bullet)
            elif bullet.check_brick_collision(bricks, hearts):
                if len(bricks) == 0:
                    scoreboard.level += 1
                    ball.reset()
                    player.reset()
                    ball.cooldown(1500)
                    make_bricks()
                scoreboard.score += 10
                player.bullets.remove(bullet)
                break_sound.play()
            else:
                bullet.draw(window, dt*ball_vel)
        for heart in hearts:
            heart.move(dt*ball_vel/2)
            if heart.check_collision(player):
                scoreboard.life += 1
                health_sound.play()
                hearts.remove(heart)
            elif heart.check_out_of_window():
                hearts.remove(heart)
            heart.draw(window, heart_img)
        scoreboard.draw(window)
        pygame.display.flip()

    while is_running:
        dt = clock.tick(FPS) / 16
        player.shoot_cooldown -= dt*16
        if ball.player_collision(player):
            blip_sound.play()
        if ball.brick_collision(bricks, hearts):
            break_sound.play()
            scoreboard.score += 10
            if len(bricks) == 0:
                scoreboard.level += 1
                ball.reset()
                player.reset()
                ball.cooldown(1500)
                make_bricks()
        ball.move(dt*ball_vel, dt, blip_sound)
        if ball.check_dead():
            dead_sound.play()
            ball.reset()
            player.reset()
            scoreboard.life -= 1
            if scoreboard.life == 0:
                is_running = False
            ball.cooldown(1500)
        redraw_window()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            elif event.type == pygame.KEYDOWN:
                pass
        key_pressed = pygame.key.get_pressed()
        if key_pressed[K_RIGHT]:
            player.right(dt*player_vel)
        if key_pressed[K_LEFT]:
            player.left(dt*player_vel)
        if key_pressed[K_SPACE]:
            player.shoot(shot_sound)
# import pygame
# from pygame.locals import *
from enemy import *
from pygame.sprite import Group
from mario import Mario
import game_functions as gf
from settings import Settings
from scoreboard import ScoreBoard

pygame.init()
CLOCK = pygame.time.Clock()
settings = Settings()
display_screen = settings.display_screen
pygame.display.set_caption("Super Mario")

scoreboard = ScoreBoard(display_screen)
mario = Mario(settings, display_screen)

enemies = Group()
blocks = Group()
pipes = Group()
poles = Group()
flags = Group()

fireball = Group()

# gf.create_block(settings, display_screen, blocks)
# gf.create_pipe(settings, display_screen, pipes)
# gf.create_enemy(settings, display_screen, enemies)
gf.create_entities(settings, display_screen, blocks, pipes, enemies, poles,
                   flags)
Ejemplo n.º 11
0
from ball import Ball
from scoreboard import ScoreBoard
import time

screen = Screen()
screen.title("Pong")
screen.bgcolor("black")
screen.setup(width=800, height=600)
screen.tracer(0)

r_paddle = Paddle((350, 0))
l_paddle = Paddle((-350, 0))

ball = Ball()

scoreboard_l = ScoreBoard((-100, 200))
scoreboard_r = ScoreBoard((100, 200))

screen.listen()
screen.onkey(r_paddle.go_up, "Up")
screen.onkey(r_paddle.go_down, "Down")
screen.onkey(l_paddle.go_up, "w")
screen.onkey(l_paddle.go_down, "s")

game_is_on = True

while game_is_on:
    time.sleep(ball.move_speed)
    ball.move()

    if ball.ycor() >= 290 or ball.ycor() <= -290:
Ejemplo n.º 12
0
def process(q, cmd_thread):
    # 初始化
    pygame.init()
    updated_frame = False  # update a frame
    settings = Settings("data\program_settings.json")
    screen = pygame.display.set_mode(
        (32 * settings.screen_scale + 2 * settings.screen_offset,
         28 * settings.screen_scale + 2 * settings.screen_offset))
    sbd = ScoreBoard("data\hiscore.csv")
    passwd = Password(settings, screen)
    tfunc.print_welcome()

    team_flights = Group()
    enemy_flights = Group()

    team1 = TeamFlight([0.8, 0.8], [3.5, 0.5], [1.5, 1.5], [1.5, 26], settings,
                       screen)
    team1.print_info()
    team_flights.add(team1)
    team2 = TeamFlight([0.8, 0.8], [5.5, 0.5], [5.5, 1.5], [5.5, 26], settings,
                       screen)
    team2.print_info()
    team_flights.add(team2)
    team3 = TeamFlight([0.8, 0.8], [9.5, 0.5], [9.5, 1.5], [9.5, 26], settings,
                       screen)
    team3.print_info()
    team_flights.add(team3)
    team4 = TeamFlight([0.8, 0.8], [11.5, 0.5], [13.5, 1.5], [13.5, 26],
                       settings, screen)
    team4.print_info()
    team_flights.add(team4)

    enemy1 = EnemyFlight([0.8, 0.8], [2, 10],
                         settings,
                         screen,
                         rotate_angle=math.pi / 100)
    enemy1.set_velocity([0, -0.11])
    enemy1.print_info()
    enemy_flights.add(enemy1)
    enemy2 = EnemyFlight([0.8, 0.8], [13, 10],
                         settings,
                         screen,
                         rotate_angle=math.pi / 100)
    enemy2.set_velocity([0, 0.11])
    enemy2.print_info()
    enemy_flights.add(enemy2)
    enemy3 = EnemyFlight([0.8, 0.8], [2, 18],
                         settings,
                         screen,
                         rotate_angle=math.pi / 100)
    enemy3.set_velocity([0, -0.11])
    enemy3.print_info()
    enemy_flights.add(enemy3)
    enemy4 = EnemyFlight([0.8, 0.8], [13, 18],
                         settings,
                         screen,
                         rotate_angle=math.pi / 100)
    enemy4.set_velocity([0, 0.11])
    enemy4.print_info()
    enemy_flights.add(enemy4)

    person = Person([0.8, 0.8], [7.5, 0.9], settings, screen)
    boxes = Boxes(settings, screen)

    pygame.display.set_caption("Explore Reactor Room")
    tfunc.update_screen(settings, screen, team_flights, enemy_flights, person,
                        boxes, passwd, sbd)

    follow_status = False

    while True:
        start_time = time.time()
        period_timeout = True

        if settings.reset_request:  # game reset
            settings.reset_request = False
            settings.paused = False
            settings.init_game_args()
            if settings.game_mode != 0:  # set enemy mode according to game mode
                settings.enemy_status = settings.game_mode + 3
            person.reinit([0.8, 0.8], [7.5, 0.9])
            boxes.reinit()
            team1.reinit([0.8, 0.8], [3.5, 0.5], [1.5, 1.5], [1.5, 26])
            team2.reinit([0.8, 0.8], [5.5, 0.5], [5.5, 1.5], [5.5, 26])
            team3.reinit([0.8, 0.8], [9.5, 0.5], [9.5, 1.5], [9.5, 26])
            team4.reinit([0.8, 0.8], [11.5, 0.5], [13.5, 1.5], [13.5, 26])
            enemy1.reinit([0.8, 0.8], [2, 10], rotate_angle=math.pi / 100)
            enemy1.set_velocity([0, -0.11])
            enemy2.reinit([0.8, 0.8], [13, 10], rotate_angle=math.pi / 100)
            enemy2.set_velocity([0, 0.11])
            enemy3.reinit([0.8, 0.8], [2, 18], rotate_angle=math.pi / 100)
            enemy3.set_velocity([0, -0.11])
            enemy4.reinit([0.8, 0.8], [13, 18], rotate_angle=math.pi / 100)
            enemy4.set_velocity([0, 0.11])
            settings.enemy_status_changed = True
            passwd.generate_passwd()

        if settings.run_active and not settings.paused:
            # 帧开始,执行每一帧的预处理
            settings.timer = settings.timer + settings.time_period  # 计算时间
            if settings.clock_1 > 0:  # 计算clock1时间
                settings.clock_1 -= 1
            else:
                settings.clock_1 = 30
                settings.change_font_color()

            n_flights = len(team_flights.sprites()) + len(
                enemy_flights.sprites())  #包含自己一共的飞机数
            p_all = [[0, 0] for i in range(n_flights)]
            p_all_direction = [0 for i in range(n_flights)]
            index = 0
            for team in team_flights.sprites():
                p_all[index] = team.get_info()[0]
                p_all_direction[index] = 0
                index = index + 1
            for enemy in enemy_flights.sprites():
                p_all[index] = enemy.get_info()[0]
                p_all_direction[index] = enemy.get_direction()
                index = index + 1

            # 更新其它状态
            person.move()
            boxes.update_info(settings, person)
            settings.all_open = boxes.all_open()
            if settings.all_open and person.get_info(
            )[0][1] <= 0.5 and not settings.failed:
                settings.complete = True
            elif (settings.timer > 480 or person.get_hp_info()[0] <= 0
                  or settings.out_times * settings.time_period >= 10.0
                  ) and not settings.complete:
                settings.failed = True
            if settings.complete and settings.game_mode != 0 and not settings.hiscore_recorded:
                settings.hiscore_recorded = True
                sbd.set_new_hiscore(settings.game_mode - 1,
                                    settings.complete_time)  # set hiscore
                sbd.write_hiscore()

            # 敌方无人机行动
            if settings.enemy_status == 0:  # 敌方无人机悬停
                for enemy in enemy_flights.sprites():
                    enemy.set_velocity([0, 0])
                    enemy.move()
                    if settings.enemy_status_changed:
                        enemy.set_attack_args(2.4, 5.0)
                    enemy.attack(person, boxes)

            elif settings.enemy_status == 1:  # 敌方无人机直线运动
                for enemy in enemy_flights.sprites():
                    enemy.move()
                    if settings.enemy_status_changed:
                        enemy.set_attack_args(2.4, 5.0)
                    enemy.attack(person, boxes)

            elif settings.enemy_status == 2:  # 敌方无人机圆周运动
                for enemy in enemy_flights.sprites():
                    enemy.move_circle()
                    if settings.enemy_status_changed:
                        enemy.set_attack_args(2.4, 5.0)
                    enemy.attack(person, boxes)

            elif settings.enemy_status == 3:  # 敌方无人机逼近己方无人机
                for enemy, team in zip(enemy_flights.sprites(),
                                       team_flights.sprites()):
                    team_p_flight = team.get_info()[0]
                    enemy_p_flight = enemy.get_info()[0]
                    team_p_flight = [
                        team_p_flight[0] + random.random() * 4 - 2,
                        team_p_flight[1] + 1.5 + random.random() * 4 - 2
                    ]
                    [vx, vy] = apf.compute_next_step(settings,
                                                     enemy_p_flight,
                                                     team_p_flight, [],
                                                     0, [],
                                                     is_team=False)
                    enemy.set_max_v(
                        settings.enemy_mission_args[1][3])  # medium velocity
                    enemy.set_velocity([vx / 1.5, vy / 1.5])
                    enemy.move()
                    if settings.enemy_status_changed:
                        enemy.set_attack_args(2.4, 5.0)
                    enemy.attack(person, boxes)

            elif settings.enemy_status >= 4 and settings.enemy_status <= 6:  # 执行任务状态
                difficulty = settings.enemy_status - 4  # 0:简单  1:中等  2:困难
                enemy_mission_args = settings.enemy_mission_args[difficulty]
                is_first = True
                flight_index = 0
                p_offset = [[0, enemy_mission_args[6]],
                            [enemy_mission_args[6], 0],
                            [-enemy_mission_args[6], 0],
                            [0, -enemy_mission_args[6]]]
                if boxes.is_in_protect_box(
                        person.get_info()[0]):  # 在保护区域内,一架逼近人,三架逼近己方无人机
                    for enemy, team in zip(enemy_flights.sprites(),
                                           team_flights.sprites()):
                        if is_first:
                            is_first = False
                            person_p_flight = person.get_info()[0]
                            enemy_p_flight = enemy.get_info()[0]
                            person_p_flight = [
                                person_p_flight[0] + random.random() * 4 - 2,
                                person_p_flight[1] + 2 +
                                random.random() * 2 * enemy_mission_args[1] -
                                enemy_mission_args[1]
                            ]
                            [vx, vy] = apf.compute_next_step(settings,
                                                             enemy_p_flight,
                                                             person_p_flight,
                                                             [],
                                                             0, [],
                                                             is_team=False)
                        else:
                            team_p_flight = team.get_info()[0]
                            enemy_p_flight = enemy.get_info()[0]
                            team_p_flight = [
                                team_p_flight[0] + random.random() * 4 - 2,
                                team_p_flight[1] + 1.5 +
                                random.random() * 2 * enemy_mission_args[1] -
                                enemy_mission_args[1]
                            ]
                            [vx, vy] = apf.compute_next_step(settings,
                                                             enemy_p_flight,
                                                             team_p_flight, [],
                                                             0, [],
                                                             is_team=False)
                        enemy.set_max_v(enemy_mission_args[3])
                        enemy.set_velocity([
                            vx * enemy_mission_args[0],
                            vy * enemy_mission_args[0]
                        ])
                        enemy.move()
                        if settings.enemy_status_changed:
                            enemy.set_attack_args(enemy_mission_args[4],
                                                  enemy_mission_args[5])
                        enemy.attack(person, boxes)
                else:  # 在保护区域外,四架逼近人
                    for enemy, team in zip(enemy_flights.sprites(),
                                           team_flights.sprites()):
                        person_p_flight = person.get_info()[0]
                        enemy_p_flight = enemy.get_info()[0]
                        person_p_flight = [
                            person_p_flight[0] + p_offset[flight_index][0] +
                            random.random() * 2 * enemy_mission_args[2] -
                            enemy_mission_args[2],
                            person_p_flight[1] + p_offset[flight_index][1] +
                            random.random() * 2 * enemy_mission_args[2] -
                            enemy_mission_args[2]
                        ]
                        flight_index = flight_index + 1
                        [vx, vy] = apf.compute_next_step(settings,
                                                         enemy_p_flight,
                                                         person_p_flight, [],
                                                         0, [],
                                                         is_team=False)
                        enemy.set_max_v(enemy_mission_args[3])
                        enemy.set_velocity([
                            vx * enemy_mission_args[0],
                            vy * enemy_mission_args[0]
                        ])
                        enemy.move()
                        if settings.enemy_status_changed:
                            enemy.set_attack_args(enemy_mission_args[4],
                                                  enemy_mission_args[5])
                        enemy.attack(person, boxes)

            settings.enemy_status_changed = False

            # 己方无人机行动
            all_reach_final_goal = True  # 假定都达到了密码箱位置(final pos)
            if follow_status:
                # 跟随主飞机模式
                is_first = True
                index = 0
                for team in team_flights.sprites():
                    if not team.reach_final_goal():
                        all_reach_final_goal = False

                    if is_first:
                        is_first = False
                        p_flight = team.get_info()[0]
                        if p_flight[1] >= 26.1:  #达成目标,恢复原队形
                            follow_status = False
                            p_goal = [1.5, 26]
                            team.set_goal(p_goal)
                            continue
                        p_leader = p_flight
                        p_goal = [tcmd_temp_line, 27.1]
                        team.set_goal(p_goal)
                    else:
                        if not follow_status:  #恢复现场
                            p_goal[0] = p_goal[0] + 4
                            team.set_goal(p_goal)
                            continue
                        p_flight = team.get_info()[0]
                        team.set_goal([p_leader[0], p_leader[1] - index])
                        index = index + tcmd_follow_length
                        p_goal = team.get_goal()

                    [vx, vy] = apf.compute_next_step(settings,
                                                     p_flight,
                                                     p_goal,
                                                     p_all,
                                                     n_flights,
                                                     p_all_direction,
                                                     is_team=True)
                    [vx, vy] = [
                        vx + random.random() * 0.02 - 0.01,
                        vy + random.random() * 0.01 - 0.005
                    ]  # 速度扰动
                    team.set_velocity([vx, vy])
                    team.move()
                    team.heal(person, boxes)

            else:
                # 独立模式
                for team in team_flights.sprites():
                    if not team.reach_final_goal():
                        all_reach_final_goal = False

                    p_flight = team.get_info()[0]
                    p_goal = team.get_goal()
                    [vx, vy] = apf.compute_next_step(settings,
                                                     p_flight,
                                                     p_goal,
                                                     p_all,
                                                     n_flights,
                                                     p_all_direction,
                                                     is_team=True)
                    [vx, vy] = [
                        vx + random.random() * 0.02 - 0.01,
                        vy + random.random() * 0.01 - 0.005
                    ]  # 速度扰动
                    team.set_velocity([vx, vy])
                    team.move()
                    team.heal(person, boxes)

            if not settings.crack_qrcode:
                boxes.crack(all_reach_final_goal)  # 全部到达目的地,破译密码

            # 获取终端指令
            if not q.empty():
                try:
                    [cmd_content, cmd_args] = q.get().split(' ', 1)
                    if cmd_content == "thenextcontentisthepassword":
                        # 玩家输入密码
                        try:
                            tcmd_passwd = cmd_args
                            if passwd.check_passwd(tcmd_passwd):
                                print("[Boxes] Password correct.")
                                settings.get_key = True
                            else:
                                print("[Boxes] Password error, try again.")
                        except:
                            print("[Boxes] Password input error.")

                    elif cmd_content == "y":
                        # 更改己方飞机目标点(Y轴平齐)策略
                        try:
                            [cmd_arg_1, cmd_arg_2] = cmd_args.split(' ')
                            new_goal = float(cmd_arg_1)
                            interval = float(cmd_arg_2)
                        except:
                            new_goal = float(cmd_args)
                            interval = 4.0
                        x_offset = 7.5 - interval * 1.5
                        print(
                            "[Team] Move team flights to Y-line %.3f m with interval %.3f m ."
                            % (new_goal, interval))
                        for team in team_flights.sprites():
                            team.set_goal([x_offset, new_goal])
                            x_offset += interval
                    elif cmd_content == "f":
                        # 跟随主飞机运动策略
                        [cmd_arg_1, cmd_arg_2] = cmd_args.split(' ')
                        tcmd_temp_line = float(cmd_arg_1)
                        tcmd_follow_length = float(cmd_arg_2)
                        print(
                            "[Team] Follow the leader team flight with X-line %.3f m and interval %.3f m ."
                            % (tcmd_temp_line, tcmd_follow_length))
                        follow_status = True
                    elif cmd_content == "s":
                        # 即刻在前方悬停策略
                        follow_status = False
                        ahead_length = float(cmd_args)
                        print("[Team] Hover at %.3f m ahead ." %
                              (ahead_length))
                        for team in team_flights.sprites():
                            temp_goal = team.get_info()[0]
                            team.set_goal(
                                [temp_goal[0], temp_goal[1] + ahead_length])
                    else:
                        print("[Team] Unknown command.")
                except:
                    print("[Team] Command error.")

            if settings.crack_qrcode and not settings.get_key:
                cmd_thread.input_passwd_request()  # input the password in tcmd

        tfunc.update_screen(settings, screen, team_flights, enemy_flights,
                            person, boxes, passwd, sbd)

        # Watch update frame time (for test)
        #if updated_frame:
        #    updated_frame = False
        #    print("Update time: %.3fs" % (time.time() - start_time))

        # 等待更新时间
        while period_timeout:
            tfunc.check_events(settings, screen, cmd_thread, team_flights,
                               enemy_flights, person, sbd)
            if time.time() - start_time >= 0.04:
                period_timeout = False
                updated_frame = True
Ejemplo n.º 13
0
from turtle import Screen
from paddle import Paddle
from scoreboard import ScoreBoard
import time

screen = Screen()
screen.setup(width=800, height=600)
screen.bgcolor('black')
screen.title('My paddle game')
screen.tracer(0)

paddle_1 = Paddle(1)
paddle_2 = Paddle(2)

scoreboard_1 = ScoreBoard(1)
scoreboard_2 = ScoreBoard(2)

screen.listen()
screen.onkey(Paddle.up, 'Up')
screen.onkey(Paddle.down, 'Down')
# screen.onkey(paddle.left, 'Left')
# screen.onkey(paddle.right, 'Right')
scoreboard_1.write(f'Score: {scoreboard_1.score}',
                   align='center',
                   font=('Arial', 16, 'normal'))
scoreboard_2.write(f'Score: {scoreboard_2.score}',
                   align='center',
                   font=('Arial', 16, 'normal'))
game_is_on = True
while game_is_on:
    screen.update()
Ejemplo n.º 14
0
import turtle
import time
from paddle import Paddle
from ball import Ball
from scoreboard import ScoreBoard

screen = turtle.Screen()
screen.setup(width=800, height=600)
screen.bgcolor("black")
screen.title("Pong")
screen.tracer(-1)

r_paddle = Paddle((350, 0))
l_paddle = Paddle((-360, 0))
ball = Ball()
com_score = ScoreBoard(40)
user_score = ScoreBoard(-40)

time.sleep(0.1)
screen.update()
screen.listen()

game_is_on = True

while game_is_on:
    screen.update()
    time.sleep(0.02)
    r_paddle.move()
    l_paddle.move()

    # Listen Event
Ejemplo n.º 15
0
def main():
    screen = Screen()
    screen.setup(width=800, height=600)
    screen.bgcolor('black')
    screen.title('Pong Game')
    screen.tracer(0)
    score_board = ScoreBoard()
    score_board.display_score()
    CenterLine()
    player1 = Paddle((350, 0))
    player2 = Paddle((-350, 0))
    ball = Ball()
    screen.onkey(player1.move_up, 'Up')
    screen.onkey(player1.move_down, 'Down')
    screen.onkey(player2.move_up, 'w')
    screen.onkey(player2.move_down, 's')
    screen.listen()

    def game_continue():
        if messagebox.askretrycancel("Game Over!!", "Wanna play again? "):
            screen.clear()
            main()

    running = True
    while running:
        time.sleep(0.05)
        screen.update()
        if score_board.check_win():
            score_board.final_result()
            ball.hideturtle()
            break
        if ball.ispoint_wait:
            if ball.point_wait < 50:
                ball.point_wait += 1
                continue
            else:
                ball.ispoint_wait = False
                ball.point_wait = 1
        screen.update()
        ball.move()
        # for not repeating collision if the distance is small
        if player1.is_collided:
            if player1.safe_count < 5:
                player1.safe_count += 1
            else:
                player1.is_collided = False
                player1.safe_count = 1
        elif player2.is_collided:
            if player2.safe_count < 5:
                player2.safe_count += 1
            else:
                player2.is_collided = False
                player2.safe_count = 1

        if ball.ycor() > 265 or ball.ycor() < -270:
            ball.wall_collision()

        if ball.xcor() < 370 and ball.distance(
                player1) < 45 and not player1.is_collided:
            ball.paddle_collision()
            ball.hit_count += 1
            ball.hit = True
            player1.is_collided = True
        elif ball.xcor() > -370 and ball.distance(
                player2) < 45 and not player2.is_collided:
            ball.paddle_collision()
            ball.hit_count += 1
            ball.hit = True
            player2.is_collided = True

        if ball.hit_count % 2 == 0 and ball.hit_count != 0 and ball.hit:
            if ball.bounce_speed < 0:
                ball.bounce_speed -= 1.5
            else:
                ball.bounce_speed += 1.5
            ball.bounce_x = ball.bounce_speed
            ball.hit = False

        if ball.xcor() > 380:
            score_board.clear()
            score_board.score1 += 1
            score_board.display_score()
            ball.ispoint_wait = True
            ball.ball_reset()

        elif ball.xcor() < -380:
            score_board.clear()
            score_board.score2 += 1
            score_board.display_score()
            ball.ispoint_wait = True
            ball.ball_reset()

    screen.update()
    time.sleep(1)
    game_continue()
    screen.bye()
    screen.exitonclick()
Ejemplo n.º 16
0
 def __init__(self):
     self.ball = Ball(400, 300, 3, 4, "random", 1)
     #self.ball.launch()
     self.paddle1 = Paddle(10, 250)
     self.paddle2 = Paddle(BOARD_LENGTH - 10 - PADDLE_LENGTH, 250)
     self.scoreboard = ScoreBoard()
    def __init__(self):
        """Initialization of game, and game resources."""

        pygame.init(
        )  # Background settings needed for Pygame to work properly.
        self.settings = Settings(
        )  # Settings instance. Initialization of Settings' arguments in AlienInvasion class.

        # self.song_file = "YOUR_CHOICE.wav"    # Addition of background music.
        # pygame.mixer.music.load(self.song_file)
        # pygame.mixer.music.play(-1)

        self.screen = pygame.display.set_mode(
            (self.settings.screen_width, self.settings.screen_height
             ))  # Create display window (surface), to display game elements.
        pygame.display.set_caption(
            "Emoji Invasion")  # Surface is updated after each loop.

        self.stats = GameStats(self)  # GameStats instance.
        self.sb = ScoreBoard(self)  # ScoreBoard instance.

        # Prepare welcoming page with user input. ---> pygame_functions.py
        screenSize(self.settings.screen_width,
                   self.settings.screen_height)  # Create welcoming page.
        newcloud = make_cloud(
            self.settings.cloud, self.settings.screen_width,
            self.settings.screen_height,
            self.settings.clouds_total)  # Create clouds on welcoming page.

        today = date.today()  # Prepate current date for welcoming page.
        year = today.year
        month = today.month
        day = today.day
        self.full_date = f"{day}/{month}/{year}"
        local_time = makeLabel(self.full_date, 30, 50, 20, "black",
                               "comicsans")
        showLabel(local_time)

        welcome_label = makeLabel("Welcome to Emoji Invasion!", 70,
                                  (self.settings.screen_width / 2),
                                  (self.settings.screen_height / 4), "black",
                                  "comicsans")
        showLabel(welcome_label)  # Show welcoming message.

        instruction_label = makeLabel("Please, enter your name:", 40,
                                      (self.settings.screen_width / 2),
                                      (self.settings.screen_height / 2) - 20,
                                      "black", "comicsans")
        showLabel(instruction_label)  # Show instructions.

        word_box = makeTextBox(self.settings.screen_width / 2,
                               self.settings.screen_height / 2 + 20, 200, 0,
                               "...", 0, 30)
        showTextBox(word_box)  # Ask user for username.
        self.entry = textBoxInput(word_box)  # Save user input.

        self.buttons = Button(self)  # Button instance.
        self.buttons.prep_menu_msgs("Select game difficulty:",
                                    f"Good luck, {self.entry}! :)")
        self.buttons.prep_difficulty_level_msgs("Easy", "Normal", "Hard")
        # self.buttons.prep_ib_msg("Info")

        self.ship = Ship(
            self
        )  # Ship instance. Self gives access Ship to AlienInvasion's resources.
        self.po = Powers(self)  # Power instance.
        self.clouds = pygame.sprite.Group(
        )  # Sprite for clouds. Draws clouds on screen.
        self.bullets = pygame.sprite.Group(
        )  # Sprite for bullets. Draws and uupdates at each pass through of main loop.
        self.enemy_bullets = pygame.sprite.Group(
        )  # Sprite for 2nd line of aliens.
        self.aliens = pygame.sprite.Group()  # Spire for 1st line of aliens.

        self._create_fleet_of_enemy_bullet(
        )  # Helper method to create a fleet of 2nd line aliens.
        self._create_fleet(
        )  # Helper method to create a fleet of 1st line aliens.
        self._create_cloud()  # Helper method to create a group of clouds.
Ejemplo n.º 18
0
from scoreboard import ScoreBoard
from turtle import Screen
from snake import Snake
from food import Food
import time

screen = Screen()
screen.setup(600,600)
screen.bgcolor("black")
screen.title("Snake Game")
screen.tracer(0)
screen.listen()

snake = Snake()
food = Food()
score_board = ScoreBoard()

screen.onkey(snake.up, "Up")
screen.onkey(snake.down, "Down")
screen.onkey(snake.left, "Left")
screen.onkey(snake.right, "Right")

game_is_on = True

while game_is_on:
    screen.update()
    time.sleep(0.06)
    snake.move()
    
    #Detect the collison with food
    if snake.head.distance(food) < 15:
Ejemplo n.º 19
0
from turtle import Screen
from Snake import Snake
import time
from Food import Food
from scoreboard import ScoreBoard

sc = Screen()
sc.setup(width=600, height=600)
sc.bgcolor("black")
sc.tracer(0)
sc.title("Snake Game")


snake = Snake()
food = Food()
scores = ScoreBoard()


sc.listen()
sc.onkey(snake.up, "Up")
sc.onkey(snake.down, "Down")
sc.onkey(snake.left, "Left")
sc.onkey(snake.right, "Right")

game = True
while game:
    sc.update()
    time.sleep(0.1)
    snake.move()

    if snake.head.distance(food) < 15:
Ejemplo n.º 20
0
from turtle import Screen
from snake import Snake
import time
from food import Food
from scoreboard import ScoreBoard

s = Screen()
s.setup(width=600, height=600)
s.bgcolor("black")
s.title("Snake Game")

sn = Snake()
food = Food()
scr_brd = ScoreBoard()
s.listen()
s.onkey(sn.up, "Up")
s.onkey(sn.down, "Down")
s.onkey(sn.left, "Left")
s.onkey(sn.right, "Right")
s.tracer(0)

game_on = True
while game_on:
    s.update()
    time.sleep(0.1)
    sn.move()

    if sn.head.distance(food) < 15:
        food.refresh()
        sn.extender()
        scr_brd.adder()
Ejemplo n.º 21
0
 def setUp(self):
     self.sboard = ScoreBoard()
     self.sboard.is_exist = 1
Ejemplo n.º 22
0
from snake import Snake
from food import Food
from scoreboard import ScoreBoard

from turtle import Screen
import time

screen = Screen()
screen.setup(width=600, height=600)
screen.bgcolor("black")
screen.title("My Snake Game")
screen.tracer(0)

snake = Snake()
food = Food()
score = ScoreBoard()

screen.listen()
screen.onkey(snake.up, "Up")
screen.onkey(snake.down, "Down")
screen.onkey(snake.left, "Left")
screen.onkey(snake.right, "Right")

while snake.game_is_on:
    screen.update()
    time.sleep(0.05)
    snake.move()

    #Detect collision with food.
    if snake.head().distance(food) < 15:
        food.refresh()
Ejemplo n.º 23
0
from food import Food
from scoreboard import ScoreBoard
from border import Border
import time
BORDER = 10

screen = Screen()
screen.setup(width=600, height=630)
screen.bgcolor("black")
screen.title("Snake Game")
screen.tracer(0)

border = Border()
snake = Snake()
food = Food()
sb = ScoreBoard()

screen.listen()
screen.onkey(snake.up, "Up")
screen.onkey(snake.down, "Down")
screen.onkey(snake.left, "Left")
screen.onkey(snake.right, "Right")

game_on = True

while game_on:
    screen.update()
    time.sleep(0.08)
    snake.move()

    # detect food collision