Exemple #1
0
    def __init__(self):
        self.tickrate = 60
        self.ticks_per_update = 1
        self.ticks_passed = 0
        self.running = True
        self.resolution = 10
        self.screenSize = Vector(800, 600)
        self.canvas = None

        self.boardSize = self.screenSize / self.resolution
Exemple #2
0
    def test_print_vel_vector(self):

        vector = Vector.Vector(6.00, 6.00, -7.00)
        expected = "The velocity vector of the ball is:\n" + "(6.00, 6.00, -7.00)\n"
        with patch("sys.stdout", new = StringIO()) as mock_stdout:
            print_vel_vector(vector)
            self.assertEqual(mock_stdout.getvalue(), expected)
Exemple #3
0
def get_incidence_angle(vel_vector: Vector):
    paddle_vector = Vector.Vector(vel_vector.x, vel_vector.y, 0)
    vector_scale1 = get_vector_scale(vel_vector)
    vector_scale2 = get_vector_scale(paddle_vector)
    if (vector_scale1 == 0):
        return (0.0)
    scalar_product = vector_scale2 / vector_scale1
    return (degrees(acos(scalar_product)))
Exemple #4
0
    def test_print_vel_vector(self):

        ball_coordinates = Vector.Vector(31.00, 33.00, -30.00)
        t = 4
        expected = "At time t + 4, ball coordinates will be:\n" + "(31.00, 33.00, -30.00)\n"
        with patch("sys.stdout", new = StringIO()) as mock_stdout:
            print_ball_coordinates(ball_coordinates, t)
            self.assertEqual(mock_stdout.getvalue(), expected)
Exemple #5
0
def generate_polygon(cord_center_x, cord_center_y, radius):
    # Array of polygon points
    arr = []

    # Number of polygon vertexes
    number_of_vertex = random.randrange(3, 10, 1)
    print('Number of vertexes')
    print(number_of_vertex)
    # Average rotation alfa
    alfa = 2 * pi / number_of_vertex

    # Rotation error alfa
    err_alfa = alfa / 100 * 10

    # Radius error
    err_radius = radius / 100 * 10

    # Rotation center
    center_point = Point(cord_center_x, cord_center_y)

    # First polygon point
    start_point = Point(get_random_position(radius, err_radius, cord_center_x),
                        cord_center_y)
    main_vector = Vector(center_point, start_point)
    # arr.append(Point(round(main_vector.p2.x, 2), round(main_vector.p2.y, 2)))
    i = 0
    while i < number_of_vertex:
        main_vector.rotate(alfa + err_alfa * random.randrange(-1, 1, 1))
        round_x = round(main_vector.p2.x, 2)
        round_y = round(main_vector.p2.y, 2)
        point = Point(round_x, round_y)
        arr.append(point)
        print('Appended point: ' + str(1 + i))
        point.print_point()
        i += 1
    return arr
Exemple #6
0
def get_ball_coordinates(vector_1: Vector, vel_vector: Vector, t: int):
    ball_coordinates = Vector.Vector(0, 0, 0)
    ball_coordinates.x = vel_vector.x * (t + 1) + vector_1.x
    ball_coordinates.y = vel_vector.y * (t + 1) + vector_1.y
    ball_coordinates.z = vel_vector.z * (t + 1) + vector_1.z
    return (ball_coordinates)
Exemple #7
0
def get_velocity_vector(vector_1: Vector, vector_2: Vector):
    velocity_vector = Vector.Vector(0, 0, 0)
    velocity_vector.x = vector_2.x - vector_1.x
    velocity_vector.y = vector_2.y - vector_1.y
    velocity_vector.z = vector_2.z - vector_1.z
    return (velocity_vector)
Exemple #8
0
from classes import Vector ## импорт необходимых модулей
from functions import *

Va = Vector()                            ## создаём экземпляры класса Vector
Vb = Vector()

i=1                                         ## устанавливаем флаг
    
while i==1:                               ## выход из цикла при удачном вводе данных
    try:  
        Va.X = float(input("\n Xa = "))     ## ввод координаты Х вектора 'а'
        i+=1                                ## увеличиваем значение на 1 для выхода из цикла                  
    except Exception as err:                ## обработка некорректного ввода данных
        WriteLogError2(err)                 ## импортируемая функция записи ошибок в журнал
while i==2:                               ## далее еще 5 аналогичных блоков try except для ввода координат
    try:
        Vb.X = float(input("\t\t\t\t Xb = "))
        i+=1
    except Exception as err:
        WriteLogError2(err)

while i==3:  
    try:
        Va.Y = float(input("\n Ya = "))
        i+=1
    except Exception as err:
        WriteLogError2(err)

while i==4:
    try:
Exemple #9
0
class Game:
    def __init__(self):
        self.tickrate = 60
        self.ticks_per_update = 1
        self.ticks_passed = 0
        self.running = True
        self.resolution = 10
        self.screenSize = Vector(800, 600)
        self.canvas = None

        self.boardSize = self.screenSize / self.resolution

    def gameLoop(self):
        while self.running:
            self.ticks_passed += 1
            for event in pygame.event.get():
                self.on_event(event)

            if self.ticks_passed >= self.ticks_per_update:
                self.ticks_passed = 0
                if not self.tick():
                    self.running = False

            self.render()
            pygame.display.update()
            self.clock.tick(self.tickrate)

    def on_event(self, event) -> None:
        if event.type == QUIT:
            self.running = False
        if event.type == KEYDOWN:
            self.on_key(event.key)
        if event.type == MOUSEBUTTONDOWN:
            self.on_mouse(event.pos)

    def on_key(self, key) -> None:
        if key == K_SPACE:
            self.board.change()
        if key == K_ESCAPE:
            self.running = False
        if key == K_t:
            self.board.force_update()
        if key == K_c:
            self.board.killall()

    def on_mouse(self, pos: tuple) -> None:
        x, y = pos
        x = floor(x / self.resolution)
        y = floor(y / self.resolution)
        self.board.update_dot((x, y))

    def tick(self) -> bool:
        return self.board.update()

    def render(self) -> None:
        self.canvas.fill((255, 255, 255))
        self.board.draw(self.canvas, self.resolution)

    def run(self) -> None:
        pygame.init()
        self.canvas = pygame.display.set_mode(self.screenSize.as_tuple())
        pygame.display.set_caption('Conway Game of Life')

        self.clock = pygame.time.Clock()

        self.board = Board(self.boardSize)
        self.gameLoop()

        pygame.quit()
Exemple #10
0
def scalar(p1, p2, p3, p4):
    line1 = Vector(p1, p2)
    line2 = Vector(p3, p4)
    return line1.x * line2.x + line1.y * line2.y
Exemple #11
0
    print_description()
    exit(MY_EXIT_SUCCESS)
if (len(argv) != NB_ARGS):
    print(INVALID_NB_ARGS_MSG, file = stderr)
    exit(MY_EXIT_FAILURE)

try:
    x0 = float(argv[1])
    y0 = float(argv[2])
    z0 = float(argv[3])
    x1 = float(argv[4])
    y1 = float(argv[5])
    z1 = float(argv[6])
    n = int(argv[7])
except ValueError:
    print(INCORRECT_TYPE_MSG, file = stderr)
    exit(MY_EXIT_FAILURE)
if (n < 0):
    print(NEG_N_MSG, file = stderr)
    exit(MY_EXIT_FAILURE)

vector_1 = Vector.Vector(x0, y0, z0)
vector_2 = Vector.Vector(x1, y1, z1)
vel_vector = get_velocity_vector(vector_1, vector_2)
ball_coordinates = get_ball_coordinates(vector_1, vel_vector, n)
incidence_angle = get_incidence_angle(vel_vector)
ball_reach = ball_reach_paddle(vector_2.z, vector_2.z + vel_vector.z)

print_vel_vector(vel_vector)
print_ball_coordinates(ball_coordinates, n)
print_incidence_angle(ball_reach, incidence_angle)