diff --git a/term1/seminar01_overload/01_myspace/myspace.cpp b/seminar01_overload/01_myspace/myspace.cpp similarity index 100% rename from term1/seminar01_overload/01_myspace/myspace.cpp rename to seminar01_overload/01_myspace/myspace.cpp diff --git a/term1/seminar01_overload/02_cubev/cubev.cpp b/seminar01_overload/02_cubev/cubev.cpp similarity index 100% rename from term1/seminar01_overload/02_cubev/cubev.cpp rename to seminar01_overload/02_cubev/cubev.cpp diff --git a/term1/seminar01_overload/03_cuber/cuber.cpp b/seminar01_overload/03_cuber/cuber.cpp similarity index 100% rename from term1/seminar01_overload/03_cuber/cuber.cpp rename to seminar01_overload/03_cuber/cuber.cpp diff --git a/term1/seminar01_overload/04_count_letters/count_letters.cpp b/seminar01_overload/04_count_letters/count_letters.cpp similarity index 100% rename from term1/seminar01_overload/04_count_letters/count_letters.cpp rename to seminar01_overload/04_count_letters/count_letters.cpp diff --git a/term1/seminar01_overload/05_add_price/add_price.cpp b/seminar01_overload/05_add_price/add_price.cpp similarity index 100% rename from term1/seminar01_overload/05_add_price/add_price.cpp rename to seminar01_overload/05_add_price/add_price.cpp diff --git a/term1/seminar01_overload/06_is_expensive/is_expensive.cpp b/seminar01_overload/06_is_expensive/is_expensive.cpp similarity index 100% rename from term1/seminar01_overload/06_is_expensive/is_expensive.cpp rename to seminar01_overload/06_is_expensive/is_expensive.cpp diff --git a/term1/seminar01_overload/07_vector3f/main.cpp b/seminar01_overload/07_vector3f/main.cpp similarity index 100% rename from term1/seminar01_overload/07_vector3f/main.cpp rename to seminar01_overload/07_vector3f/main.cpp diff --git a/term1/seminar01_overload/07_vector3f/vector3f.h b/seminar01_overload/07_vector3f/vector3f.h similarity index 100% rename from term1/seminar01_overload/07_vector3f/vector3f.h rename to seminar01_overload/07_vector3f/vector3f.h diff --git a/term1/seminar01_overload/08_complex/complex.h b/seminar01_overload/08_complex/complex.h similarity index 100% rename from term1/seminar01_overload/08_complex/complex.h rename to seminar01_overload/08_complex/complex.h diff --git a/term1/seminar01_overload/08_complex/complex_image.cpp b/seminar01_overload/08_complex/complex_image.cpp similarity index 100% rename from term1/seminar01_overload/08_complex/complex_image.cpp rename to seminar01_overload/08_complex/complex_image.cpp diff --git a/term1/seminar01_overload/08_complex/complex_movie.cpp b/seminar01_overload/08_complex/complex_movie.cpp similarity index 100% rename from term1/seminar01_overload/08_complex/complex_movie.cpp rename to seminar01_overload/08_complex/complex_movie.cpp diff --git a/term1/seminar01_overload/08_complex/complex_movie.mp4 b/seminar01_overload/08_complex/complex_movie.mp4 similarity index 100% rename from term1/seminar01_overload/08_complex/complex_movie.mp4 rename to seminar01_overload/08_complex/complex_movie.mp4 diff --git a/term1/seminar01_overload/08_complex/complex_test.cpp b/seminar01_overload/08_complex/complex_test.cpp similarity index 100% rename from term1/seminar01_overload/08_complex/complex_test.cpp rename to seminar01_overload/08_complex/complex_test.cpp diff --git a/term1/seminar01_overload/08_complex/julia.cpp b/seminar01_overload/08_complex/julia.cpp similarity index 100% rename from term1/seminar01_overload/08_complex/julia.cpp rename to seminar01_overload/08_complex/julia.cpp diff --git a/term1/seminar01_overload/08_complex/julia_images/-0.4+0.6i.ppm b/seminar01_overload/08_complex/julia_images/-0.4+0.6i.ppm similarity index 100% rename from term1/seminar01_overload/08_complex/julia_images/-0.4+0.6i.ppm rename to seminar01_overload/08_complex/julia_images/-0.4+0.6i.ppm diff --git a/term1/seminar01_overload/08_complex/julia_images/-0.7-0.38i.ppm b/seminar01_overload/08_complex/julia_images/-0.7-0.38i.ppm similarity index 100% rename from term1/seminar01_overload/08_complex/julia_images/-0.7-0.38i.ppm rename to seminar01_overload/08_complex/julia_images/-0.7-0.38i.ppm diff --git a/term1/seminar01_overload/08_complex/julia_images/-0.8+0.16i.ppm b/seminar01_overload/08_complex/julia_images/-0.8+0.16i.ppm similarity index 100% rename from term1/seminar01_overload/08_complex/julia_images/-0.8+0.16i.ppm rename to seminar01_overload/08_complex/julia_images/-0.8+0.16i.ppm diff --git a/term1/seminar01_overload/08_complex/julia_images/0.28+0.011i.ppm b/seminar01_overload/08_complex/julia_images/0.28+0.011i.ppm similarity index 100% rename from term1/seminar01_overload/08_complex/julia_images/0.28+0.011i.ppm rename to seminar01_overload/08_complex/julia_images/0.28+0.011i.ppm diff --git a/term1/seminar01_overload/08_complex/julia_movie.cpp b/seminar01_overload/08_complex/julia_movie.cpp similarity index 100% rename from term1/seminar01_overload/08_complex/julia_movie.cpp rename to seminar01_overload/08_complex/julia_movie.cpp diff --git a/term1/seminar01_overload/08_complex/mandelbrot.cpp b/seminar01_overload/08_complex/mandelbrot.cpp similarity index 100% rename from term1/seminar01_overload/08_complex/mandelbrot.cpp rename to seminar01_overload/08_complex/mandelbrot.cpp diff --git a/term1/seminar01_overload/08_complex/mandelbrot_images/mandelbrot.ppm b/seminar01_overload/08_complex/mandelbrot_images/mandelbrot.ppm similarity index 100% rename from term1/seminar01_overload/08_complex/mandelbrot_images/mandelbrot.ppm rename to seminar01_overload/08_complex/mandelbrot_images/mandelbrot.ppm diff --git a/term1/seminar01_overload/homework_overload.pdf b/seminar01_overload/homework_overload.pdf similarity index 100% rename from term1/seminar01_overload/homework_overload.pdf rename to seminar01_overload/homework_overload.pdf diff --git a/term1/seminar02_encapsulation/0circle/circle.cpp b/seminar02_encapsulation/0circle/circle.cpp similarity index 100% rename from term1/seminar02_encapsulation/0circle/circle.cpp rename to seminar02_encapsulation/0circle/circle.cpp diff --git a/term1/seminar02_encapsulation/0circle/circle.h b/seminar02_encapsulation/0circle/circle.h similarity index 100% rename from term1/seminar02_encapsulation/0circle/circle.h rename to seminar02_encapsulation/0circle/circle.h diff --git a/term1/seminar02_encapsulation/0circle/main.cpp b/seminar02_encapsulation/0circle/main.cpp similarity index 100% rename from term1/seminar02_encapsulation/0circle/main.cpp rename to seminar02_encapsulation/0circle/main.cpp diff --git a/term1/seminar02_encapsulation/0circle/point.cpp b/seminar02_encapsulation/0circle/point.cpp similarity index 100% rename from term1/seminar02_encapsulation/0circle/point.cpp rename to seminar02_encapsulation/0circle/point.cpp diff --git a/term1/seminar02_encapsulation/0circle/point.h b/seminar02_encapsulation/0circle/point.h similarity index 100% rename from term1/seminar02_encapsulation/0circle/point.h rename to seminar02_encapsulation/0circle/point.h diff --git a/term1/seminar02_encapsulation/1number/main.cpp b/seminar02_encapsulation/1number/main.cpp similarity index 100% rename from term1/seminar02_encapsulation/1number/main.cpp rename to seminar02_encapsulation/1number/main.cpp diff --git a/term1/seminar02_encapsulation/1number/number.cpp b/seminar02_encapsulation/1number/number.cpp similarity index 100% rename from term1/seminar02_encapsulation/1number/number.cpp rename to seminar02_encapsulation/1number/number.cpp diff --git a/term1/seminar02_encapsulation/1number/number.h b/seminar02_encapsulation/1number/number.h similarity index 100% rename from term1/seminar02_encapsulation/1number/number.h rename to seminar02_encapsulation/1number/number.h diff --git a/term1/seminar02_encapsulation/homework_encapsulation.pdf b/seminar02_encapsulation/homework_encapsulation.pdf similarity index 100% rename from term1/seminar02_encapsulation/homework_encapsulation.pdf rename to seminar02_encapsulation/homework_encapsulation.pdf diff --git a/term1/seminar03_initialization/01_letter_case_switch/main.cpp b/seminar03_initialization/01_letter_case_switch/main.cpp similarity index 100% rename from term1/seminar03_initialization/01_letter_case_switch/main.cpp rename to seminar03_initialization/01_letter_case_switch/main.cpp diff --git a/term1/seminar03_initialization/01_letter_case_switch/main.cpp~ b/seminar03_initialization/01_letter_case_switch/main.cpp~ similarity index 100% rename from term1/seminar03_initialization/01_letter_case_switch/main.cpp~ rename to seminar03_initialization/01_letter_case_switch/main.cpp~ diff --git a/term1/seminar03_initialization/02_repeat/a.out~ b/seminar03_initialization/02_repeat/a.out~ similarity index 100% rename from term1/seminar03_initialization/02_repeat/a.out~ rename to seminar03_initialization/02_repeat/a.out~ diff --git a/term1/seminar03_initialization/02_repeat/main.cpp b/seminar03_initialization/02_repeat/main.cpp similarity index 100% rename from term1/seminar03_initialization/02_repeat/main.cpp rename to seminar03_initialization/02_repeat/main.cpp diff --git a/term1/seminar03_initialization/02_repeat/main.cpp~ b/seminar03_initialization/02_repeat/main.cpp~ similarity index 100% rename from term1/seminar03_initialization/02_repeat/main.cpp~ rename to seminar03_initialization/02_repeat/main.cpp~ diff --git a/term1/seminar03_initialization/03_string_multiplication/main.cpp b/seminar03_initialization/03_string_multiplication/main.cpp similarity index 100% rename from term1/seminar03_initialization/03_string_multiplication/main.cpp rename to seminar03_initialization/03_string_multiplication/main.cpp diff --git a/term1/seminar03_initialization/04_truncate_to_dot/main.cpp b/seminar03_initialization/04_truncate_to_dot/main.cpp similarity index 100% rename from term1/seminar03_initialization/04_truncate_to_dot/main.cpp rename to seminar03_initialization/04_truncate_to_dot/main.cpp diff --git a/term1/seminar03_initialization/05_string_sum/main.cpp b/seminar03_initialization/05_string_sum/main.cpp similarity index 100% rename from term1/seminar03_initialization/05_string_sum/main.cpp rename to seminar03_initialization/05_string_sum/main.cpp diff --git a/term1/seminar03_initialization/06_new/main.cpp b/seminar03_initialization/06_new/main.cpp similarity index 100% rename from term1/seminar03_initialization/06_new/main.cpp rename to seminar03_initialization/06_new/main.cpp diff --git a/term1/seminar03_initialization/07_placement/main.cpp b/seminar03_initialization/07_placement/main.cpp similarity index 100% rename from term1/seminar03_initialization/07_placement/main.cpp rename to seminar03_initialization/07_placement/main.cpp diff --git a/term1/seminar03_initialization/07_placement/miptstring.cpp b/seminar03_initialization/07_placement/miptstring.cpp similarity index 100% rename from term1/seminar03_initialization/07_placement/miptstring.cpp rename to seminar03_initialization/07_placement/miptstring.cpp diff --git a/term1/seminar03_initialization/08_stringview/main.cpp b/seminar03_initialization/08_stringview/main.cpp similarity index 100% rename from term1/seminar03_initialization/08_stringview/main.cpp rename to seminar03_initialization/08_stringview/main.cpp diff --git a/term1/seminar03_initialization/08_stringview/miptstring.cpp b/seminar03_initialization/08_stringview/miptstring.cpp similarity index 100% rename from term1/seminar03_initialization/08_stringview/miptstring.cpp rename to seminar03_initialization/08_stringview/miptstring.cpp diff --git a/term1/seminar03_initialization/08_stringview/miptstring.h b/seminar03_initialization/08_stringview/miptstring.h similarity index 100% rename from term1/seminar03_initialization/08_stringview/miptstring.h rename to seminar03_initialization/08_stringview/miptstring.h diff --git a/term1/seminar03_initialization/08_stringview/miptstringview.cpp b/seminar03_initialization/08_stringview/miptstringview.cpp similarity index 100% rename from term1/seminar03_initialization/08_stringview/miptstringview.cpp rename to seminar03_initialization/08_stringview/miptstringview.cpp diff --git a/term1/seminar03_initialization/08_stringview/miptstringview.h b/seminar03_initialization/08_stringview/miptstringview.h similarity index 100% rename from term1/seminar03_initialization/08_stringview/miptstringview.h rename to seminar03_initialization/08_stringview/miptstringview.h diff --git a/term1/seminar03_initialization/homework_initialization.pdf b/seminar03_initialization/homework_initialization.pdf similarity index 100% rename from term1/seminar03_initialization/homework_initialization.pdf rename to seminar03_initialization/homework_initialization.pdf diff --git a/term1/seminar04_templates/01_sum_even/main.cpp b/seminar04_templates/01_sum_even/main.cpp similarity index 100% rename from term1/seminar04_templates/01_sum_even/main.cpp rename to seminar04_templates/01_sum_even/main.cpp diff --git a/term1/seminar04_templates/02_last_digits/main.cpp b/seminar04_templates/02_last_digits/main.cpp similarity index 100% rename from term1/seminar04_templates/02_last_digits/main.cpp rename to seminar04_templates/02_last_digits/main.cpp diff --git a/term1/seminar04_templates/03_factorization/main.cpp b/seminar04_templates/03_factorization/main.cpp similarity index 100% rename from term1/seminar04_templates/03_factorization/main.cpp rename to seminar04_templates/03_factorization/main.cpp diff --git a/term1/seminar04_templates/04_time/main.cpp b/seminar04_templates/04_time/main.cpp similarity index 100% rename from term1/seminar04_templates/04_time/main.cpp rename to seminar04_templates/04_time/main.cpp diff --git a/term1/seminar04_templates/04_time/time.cpp b/seminar04_templates/04_time/time.cpp similarity index 100% rename from term1/seminar04_templates/04_time/time.cpp rename to seminar04_templates/04_time/time.cpp diff --git a/term1/seminar04_templates/04_time/time.h b/seminar04_templates/04_time/time.h similarity index 100% rename from term1/seminar04_templates/04_time/time.h rename to seminar04_templates/04_time/time.h diff --git a/term1/seminar04_templates/05_maximum/main.cpp b/seminar04_templates/05_maximum/main.cpp similarity index 100% rename from term1/seminar04_templates/05_maximum/main.cpp rename to seminar04_templates/05_maximum/main.cpp diff --git a/term1/seminar04_templates/06_pairing/main.cpp b/seminar04_templates/06_pairing/main.cpp similarity index 100% rename from term1/seminar04_templates/06_pairing/main.cpp rename to seminar04_templates/06_pairing/main.cpp diff --git a/term1/seminar04_templates/07_manager/main.cpp b/seminar04_templates/07_manager/main.cpp similarity index 100% rename from term1/seminar04_templates/07_manager/main.cpp rename to seminar04_templates/07_manager/main.cpp diff --git a/term1/seminar04_templates/08_ref/main.cpp b/seminar04_templates/08_ref/main.cpp similarity index 100% rename from term1/seminar04_templates/08_ref/main.cpp rename to seminar04_templates/08_ref/main.cpp diff --git a/term1/seminar04_templates/homework_templates.pdf b/seminar04_templates/homework_templates.pdf similarity index 100% rename from term1/seminar04_templates/homework_templates.pdf rename to seminar04_templates/homework_templates.pdf diff --git a/term1/seminar05_iterators/01_slide/main.cpp b/seminar05_iterators/01_slide/main.cpp similarity index 100% rename from term1/seminar05_iterators/01_slide/main.cpp rename to seminar05_iterators/01_slide/main.cpp diff --git a/term1/seminar05_iterators/02_string_vector_reverse/main.cpp b/seminar05_iterators/02_string_vector_reverse/main.cpp similarity index 100% rename from term1/seminar05_iterators/02_string_vector_reverse/main.cpp rename to seminar05_iterators/02_string_vector_reverse/main.cpp diff --git a/term1/seminar05_iterators/03_is_uppper/main.cpp b/seminar05_iterators/03_is_uppper/main.cpp similarity index 100% rename from term1/seminar05_iterators/03_is_uppper/main.cpp rename to seminar05_iterators/03_is_uppper/main.cpp diff --git a/term1/seminar05_iterators/04_is_identifier/main.cpp b/seminar05_iterators/04_is_identifier/main.cpp similarity index 100% rename from term1/seminar05_iterators/04_is_identifier/main.cpp rename to seminar05_iterators/04_is_identifier/main.cpp diff --git a/term1/seminar05_iterators/05_move_spaces/main.cpp b/seminar05_iterators/05_move_spaces/main.cpp similarity index 100% rename from term1/seminar05_iterators/05_move_spaces/main.cpp rename to seminar05_iterators/05_move_spaces/main.cpp diff --git a/term1/seminar05_iterators/homework_iterators.pdf b/seminar05_iterators/homework_iterators.pdf similarity index 100% rename from term1/seminar05_iterators/homework_iterators.pdf rename to seminar05_iterators/homework_iterators.pdf diff --git a/term1/seminar09_libraries/01_balls/Makefile b/seminar09_libraries/01_balls/Makefile similarity index 100% rename from term1/seminar09_libraries/01_balls/Makefile rename to seminar09_libraries/01_balls/Makefile diff --git a/term1/seminar09_libraries/01_balls/balls.cpp b/seminar09_libraries/01_balls/balls.cpp similarity index 100% rename from term1/seminar09_libraries/01_balls/balls.cpp rename to seminar09_libraries/01_balls/balls.cpp diff --git a/term1/seminar09_libraries/02_thor/Makefile b/seminar09_libraries/02_thor/Makefile similarity index 100% rename from term1/seminar09_libraries/02_thor/Makefile rename to seminar09_libraries/02_thor/Makefile diff --git a/term1/seminar09_libraries/02_thor/balls.cpp b/seminar09_libraries/02_thor/balls.cpp similarity index 100% rename from term1/seminar09_libraries/02_thor/balls.cpp rename to seminar09_libraries/02_thor/balls.cpp diff --git a/term1/seminar09_libraries/03_walls/balls.cpp b/seminar09_libraries/03_walls/balls.cpp similarity index 100% rename from term1/seminar09_libraries/03_walls/balls.cpp rename to seminar09_libraries/03_walls/balls.cpp diff --git a/term1/seminar09_libraries/04_n_bodies/balls.cpp b/seminar09_libraries/04_n_bodies/balls.cpp similarity index 100% rename from term1/seminar09_libraries/04_n_bodies/balls.cpp rename to seminar09_libraries/04_n_bodies/balls.cpp diff --git a/term1/seminar09_libraries/05_n_bodies_mass/balls.cpp b/seminar09_libraries/05_n_bodies_mass/balls.cpp similarity index 100% rename from term1/seminar09_libraries/05_n_bodies_mass/balls.cpp rename to seminar09_libraries/05_n_bodies_mass/balls.cpp diff --git a/term1/seminar09_libraries/06_n_bodies_charges/balls.cpp b/seminar09_libraries/06_n_bodies_charges/balls.cpp similarity index 100% rename from term1/seminar09_libraries/06_n_bodies_charges/balls.cpp rename to seminar09_libraries/06_n_bodies_charges/balls.cpp diff --git a/term1/seminar09_libraries/07_n_bodies_charges_mouse/balls.cpp b/seminar09_libraries/07_n_bodies_charges_mouse/balls.cpp similarity index 100% rename from term1/seminar09_libraries/07_n_bodies_charges_mouse/balls.cpp rename to seminar09_libraries/07_n_bodies_charges_mouse/balls.cpp diff --git a/term1/seminar09_libraries/final b/seminar09_libraries/final similarity index 100% rename from term1/seminar09_libraries/final rename to seminar09_libraries/final diff --git a/term1/seminar09_libraries/homework_libraries.pdf b/seminar09_libraries/homework_libraries.pdf similarity index 100% rename from term1/seminar09_libraries/homework_libraries.pdf rename to seminar09_libraries/homework_libraries.pdf diff --git a/term1/seminar11_events/01_select_move_delete/Makefile b/seminar11_events/01_select_move_delete/Makefile similarity index 100% rename from term1/seminar11_events/01_select_move_delete/Makefile rename to seminar11_events/01_select_move_delete/Makefile diff --git a/term1/seminar11_events/01_select_move_delete/consolas.ttf b/seminar11_events/01_select_move_delete/consolas.ttf similarity index 100% rename from term1/seminar11_events/01_select_move_delete/consolas.ttf rename to seminar11_events/01_select_move_delete/consolas.ttf diff --git a/term1/seminar11_events/01_select_move_delete/context_menu.hpp b/seminar11_events/01_select_move_delete/context_menu.hpp similarity index 100% rename from term1/seminar11_events/01_select_move_delete/context_menu.hpp rename to seminar11_events/01_select_move_delete/context_menu.hpp diff --git a/term1/seminar11_events/01_select_move_delete/select_move_delete.cpp b/seminar11_events/01_select_move_delete/select_move_delete.cpp similarity index 100% rename from term1/seminar11_events/01_select_move_delete/select_move_delete.cpp rename to seminar11_events/01_select_move_delete/select_move_delete.cpp diff --git a/term1/seminar11_events/02_slider/Makefile b/seminar11_events/02_slider/Makefile similarity index 100% rename from term1/seminar11_events/02_slider/Makefile rename to seminar11_events/02_slider/Makefile diff --git a/term1/seminar11_events/02_slider/circle.cpp b/seminar11_events/02_slider/circle.cpp similarity index 100% rename from term1/seminar11_events/02_slider/circle.cpp rename to seminar11_events/02_slider/circle.cpp diff --git a/term1/seminar11_events/02_slider/consolas.ttf b/seminar11_events/02_slider/consolas.ttf similarity index 100% rename from term1/seminar11_events/02_slider/consolas.ttf rename to seminar11_events/02_slider/consolas.ttf diff --git a/term1/seminar11_events/02_slider/slider.cpp b/seminar11_events/02_slider/slider.cpp similarity index 100% rename from term1/seminar11_events/02_slider/slider.cpp rename to seminar11_events/02_slider/slider.cpp diff --git a/term1/seminar11_events/02_slider/slider.hpp b/seminar11_events/02_slider/slider.hpp similarity index 100% rename from term1/seminar11_events/02_slider/slider.hpp rename to seminar11_events/02_slider/slider.hpp diff --git a/term1/seminar11_events/homework_events.pdf b/seminar11_events/homework_events.pdf similarity index 100% rename from term1/seminar11_events/homework_events.pdf rename to seminar11_events/homework_events.pdf diff --git a/term1/seminar13_polymorphism/arkanoid/Makefile b/seminar13_polymorphism/arkanoid/Makefile similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/Makefile rename to seminar13_polymorphism/arkanoid/Makefile diff --git a/term1/seminar13_polymorphism/arkanoid/arkanoid.cpp b/seminar13_polymorphism/arkanoid/arkanoid.cpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/arkanoid.cpp rename to seminar13_polymorphism/arkanoid/arkanoid.cpp diff --git a/term1/seminar13_polymorphism/arkanoid/arkanoid.hpp b/seminar13_polymorphism/arkanoid/arkanoid.hpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/arkanoid.hpp rename to seminar13_polymorphism/arkanoid/arkanoid.hpp diff --git a/term1/seminar13_polymorphism/arkanoid/ball.cpp b/seminar13_polymorphism/arkanoid/ball.cpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/ball.cpp rename to seminar13_polymorphism/arkanoid/ball.cpp diff --git a/term1/seminar13_polymorphism/arkanoid/ball.hpp b/seminar13_polymorphism/arkanoid/ball.hpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/ball.hpp rename to seminar13_polymorphism/arkanoid/ball.hpp diff --git a/term1/seminar13_polymorphism/arkanoid/bonus.cpp b/seminar13_polymorphism/arkanoid/bonus.cpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/bonus.cpp rename to seminar13_polymorphism/arkanoid/bonus.cpp diff --git a/term1/seminar13_polymorphism/arkanoid/bonus.hpp b/seminar13_polymorphism/arkanoid/bonus.hpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/bonus.hpp rename to seminar13_polymorphism/arkanoid/bonus.hpp diff --git a/term1/seminar13_polymorphism/arkanoid/brick.hpp b/seminar13_polymorphism/arkanoid/brick.hpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/brick.hpp rename to seminar13_polymorphism/arkanoid/brick.hpp diff --git a/term1/seminar13_polymorphism/arkanoid/brick_grid.cpp b/seminar13_polymorphism/arkanoid/brick_grid.cpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/brick_grid.cpp rename to seminar13_polymorphism/arkanoid/brick_grid.cpp diff --git a/term1/seminar13_polymorphism/arkanoid/brick_grid.hpp b/seminar13_polymorphism/arkanoid/brick_grid.hpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/brick_grid.hpp rename to seminar13_polymorphism/arkanoid/brick_grid.hpp diff --git a/term1/seminar13_polymorphism/arkanoid/consola.ttf b/seminar13_polymorphism/arkanoid/consola.ttf similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/consola.ttf rename to seminar13_polymorphism/arkanoid/consola.ttf diff --git a/term1/seminar13_polymorphism/arkanoid/main.cpp b/seminar13_polymorphism/arkanoid/main.cpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/main.cpp rename to seminar13_polymorphism/arkanoid/main.cpp diff --git a/term1/seminar13_polymorphism/arkanoid/paddle.cpp b/seminar13_polymorphism/arkanoid/paddle.cpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/paddle.cpp rename to seminar13_polymorphism/arkanoid/paddle.cpp diff --git a/term1/seminar13_polymorphism/arkanoid/paddle.hpp b/seminar13_polymorphism/arkanoid/paddle.hpp similarity index 100% rename from term1/seminar13_polymorphism/arkanoid/paddle.hpp rename to seminar13_polymorphism/arkanoid/paddle.hpp diff --git a/term1/questions_1.pdf b/term1/questions_1.pdf deleted file mode 100644 index 4d288c6..0000000 Binary files a/term1/questions_1.pdf and /dev/null differ diff --git a/term1/seminar11_events/01_select_move_delete/tags b/term1/seminar11_events/01_select_move_delete/tags deleted file mode 100644 index 35703df..0000000 --- a/term1/seminar11_events/01_select_move_delete/tags +++ /dev/null @@ -1,11 +0,0 @@ -!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ -!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ -!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ -!_TAG_OUTPUT_FILESEP slash /slash or backslash/ -!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ -!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ -!_TAG_PROC_CWD /home/nihonium/projects/mipt_cpp/seminar11_events/01_select_move_delete/ // -!_TAG_PROGRAM_AUTHOR Universal Ctags Team // -!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ -!_TAG_PROGRAM_URL https://ctags.io/ /official site/ -!_TAG_PROGRAM_VERSION 5.9.0 /p5.9.20220828.0/ diff --git a/term1/seminar11_events/02_slider/tags b/term1/seminar11_events/02_slider/tags deleted file mode 100644 index 1ea4ee7..0000000 --- a/term1/seminar11_events/02_slider/tags +++ /dev/null @@ -1,11 +0,0 @@ -!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ -!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ -!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ -!_TAG_OUTPUT_FILESEP slash /slash or backslash/ -!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ -!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ -!_TAG_PROC_CWD /home/nihonium/projects/mipt_cpp/seminar11_events/02_slider/ // -!_TAG_PROGRAM_AUTHOR Universal Ctags Team // -!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ -!_TAG_PROGRAM_URL https://ctags.io/ /official site/ -!_TAG_PROGRAM_VERSION 5.9.0 /p5.9.20220828.0/ diff --git a/term1/seminar13_polymorphism/arkanoid/arkanoid b/term1/seminar13_polymorphism/arkanoid/arkanoid deleted file mode 100755 index e3ad455..0000000 Binary files a/term1/seminar13_polymorphism/arkanoid/arkanoid and /dev/null differ diff --git a/term1/seminar13_polymorphism/arkanoid/tags b/term1/seminar13_polymorphism/arkanoid/tags deleted file mode 100644 index 49b5484..0000000 --- a/term1/seminar13_polymorphism/arkanoid/tags +++ /dev/null @@ -1,11 +0,0 @@ -!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ -!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ -!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ -!_TAG_OUTPUT_FILESEP slash /slash or backslash/ -!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ -!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ -!_TAG_PROC_CWD /home/nihonium/projects/mipt_cpp/seminar13_polymorphism/arkanoid/ // -!_TAG_PROGRAM_AUTHOR Universal Ctags Team // -!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ -!_TAG_PROGRAM_URL https://ctags.io/ /official site/ -!_TAG_PROGRAM_VERSION 5.9.0 /p5.9.20220828.0/ diff --git a/term1/seminar13_polymorphism/homework_polymorphism.pdf b/term1/seminar13_polymorphism/homework_polymorphism.pdf deleted file mode 100644 index 4c6f885..0000000 Binary files a/term1/seminar13_polymorphism/homework_polymorphism.pdf and /dev/null differ diff --git a/term2/seminar03_state/CMakeLists.txt b/term2/seminar03_state/CMakeLists.txt deleted file mode 100644 index 6164d21..0000000 --- a/term2/seminar03_state/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -cmake_minimum_required(VERSION 2.8.0) -project(player_movement) - -# Найдём библиотеку SFML в системе -find_package(SFML 2.5 REQUIRED graphics window system) - -# Создадим исполняемый файл по имени player_movement из исходных файлов -add_executable(player_movement src/main.cpp src/player.cpp src/player_states.cpp) - -# Укажем, что нужно использовать стандарт C++20 -target_compile_features(player_movement PRIVATE cxx_std_20) - -# Подключим библиотеку SFML к нашему проекту -target_link_libraries(player_movement PRIVATE sfml-graphics sfml-system sfml-window) - -# Добавим файл со спрайтами -configure_file(src/hero.png hero.png COPYONLY) diff --git a/term2/seminar03_state/homework_state.pdf b/term2/seminar03_state/homework_state.pdf deleted file mode 100644 index 62b2b3c..0000000 Binary files a/term2/seminar03_state/homework_state.pdf and /dev/null differ diff --git a/term2/seminar03_state/src/animation.hpp b/term2/seminar03_state/src/animation.hpp deleted file mode 100644 index 8d902fb..0000000 --- a/term2/seminar03_state/src/animation.hpp +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once -#include -#include -using std::cout, std::endl; - - -class Animation -{ -public: - enum class AnimationType {Repeat, OneIteration}; - - Animation(AnimationType type = AnimationType::Repeat) : mType{type} - { - } - - void addTextureRect(sf::IntRect rect) - { - mTextureRects.push_back(rect); - } - - void setAnimationSpeed(float animationSpeed) - { - mAnimationSpeed = animationSpeed; - } - - sf::Vector2i getSize() - { - return {mTextureRects[mCurrentFrame].width, mTextureRects[mCurrentFrame].height}; - } - - void update(float dt) - { - mTime += dt; - mCurrentFrame = static_cast(mAnimationSpeed * mTime); - - if (mCurrentFrame >= mTextureRects.size()) - { - if (mType == AnimationType::Repeat) - { - mCurrentFrame = 0; - mTime = 0; - } - else if (mType == AnimationType::OneIteration) - { - mCurrentFrame = mTextureRects.size() - 1; - mTime = mCurrentFrame / mAnimationSpeed; - mHasEnded = true; - } - } - } - - void updateSprite(sf::Sprite& sprite) const - { - sprite.setTextureRect(mTextureRects[mCurrentFrame]); - } - - bool hasEnded() { - return mHasEnded; - } -private: - - std::vector mTextureRects {}; - - int mCurrentFrame {0}; - float mAnimationSpeed {1}; - float mTime {0}; - AnimationType mType {AnimationType::OneIteration}; - bool mHasEnded = false; -}; diff --git a/term2/seminar03_state/src/block.hpp b/term2/seminar03_state/src/block.hpp deleted file mode 100644 index 63199ce..0000000 --- a/term2/seminar03_state/src/block.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include -#include - -struct Block { - sf::FloatRect mBlock; - bool mIsDestructable = false; - Block(sf::FloatRect b, bool isDestructable = false) : mBlock(b), mIsDestructable{isDestructable} {}; -}; - - diff --git a/term2/seminar03_state/src/hero.png b/term2/seminar03_state/src/hero.png deleted file mode 100644 index 32e82ea..0000000 Binary files a/term2/seminar03_state/src/hero.png and /dev/null differ diff --git a/term2/seminar03_state/src/main.cpp b/term2/seminar03_state/src/main.cpp deleted file mode 100644 index 948f636..0000000 --- a/term2/seminar03_state/src/main.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include -#include "world.hpp" - -int main() -{ - sf::ContextSettings settings; - settings.antialiasingLevel = 8.0; - sf::RenderWindow window(sf::VideoMode(1200, 900), "Player states", sf::Style::Close, settings); - window.setVerticalSyncEnabled(true); - window.setFramerateLimit(60); - - double time = 0; - double dt = 1.0 / 60; - - World world; - world.addBlock(sf::FloatRect{-500, 770, 20000, 400}); - /* Разрушаемый блок слева от точки спавна игрока */ - world.addBlock({sf::FloatRect{-200,700, 100, 500}, true}); - world.addBlock(sf::FloatRect{-400, 100, 700, 300}); - world.addBlock(sf::FloatRect{600, 500, 300, 120}); - world.addBlock(sf::FloatRect{800, 0, 400, 200}); - world.addBlock(sf::FloatRect{-100, -700, 400, 100}); - world.addBlock(sf::FloatRect{700, -700, 400, 100}); - world.addBlock(sf::FloatRect{1500, -700, 400, 100}); - world.addBlock(sf::FloatRect{1100, -300, 400, 100}); - world.addBlock(sf::FloatRect{1100, 400, 400, 400}); - world.addBlock(sf::FloatRect{1900, -100, 200, 800}); - world.addBlock(sf::FloatRect{3000, 500, 1000, 200}); - - while (window.isOpen()) - { - sf::Event event; - while(window.pollEvent(event)) - { - if(event.type == sf::Event::Closed) - window.close(); - - world.handleEvents(event); - } - window.clear(sf::Color::Black); - world.update(dt); - world.draw(window); - - window.display(); - - time += dt; - } - - return 0; -} diff --git a/term2/seminar03_state/src/player.cpp b/term2/seminar03_state/src/player.cpp deleted file mode 100644 index c600210..0000000 --- a/term2/seminar03_state/src/player.cpp +++ /dev/null @@ -1,167 +0,0 @@ -#include -#include -#include -#include -#include "player.hpp" -#include "player_states.hpp" -#include "block.hpp" - -Player::Player(sf::Vector2f position) : mPosition{position} -{ - if (!mTexture.loadFromFile("./hero.png")) - { - std::cerr << "Can't load image ./hero.png for Player class" << std::endl; - std::exit(1); - } - - setState(new Idle(this)); - - mSprite.setTexture(mTexture); - mSprite.setOrigin(mSprite.getLocalBounds().width / 2, mSprite.getLocalBounds().height / 2); - mSprite.setPosition(mPosition); - - - mScaleFactor = 4; - mSprite.setScale(mScaleFactor, mScaleFactor); -} - -void Player::setState(PlayerState* pNewState) -{ - delete mpState; - mpState = pNewState; -} - - -sf::Vector2f Player::getCenter() const -{ - return mPosition; -} - - -void Player::applyVelocity(sf::Vector2f velocity) -{ - mVelocity += velocity; -} - -void Player::update(float dt) -{ - mpState->update(this, dt); - mPosition += mVelocity * dt; - - mSprite.setOrigin(mSprite.getLocalBounds().width / 2, mSprite.getLocalBounds().height / 2); - mSprite.setPosition(mPosition); - mpState->updateSprite(mSprite, mIsFacedRight, mScaleFactor); -} - -void Player::draw(sf::RenderWindow& window) -{ - window.draw(mSprite); - -#ifdef _DEBUG - sf::RectangleShape shape {{mCollisionRect.width, mCollisionRect.height}}; - shape.setPosition(mPosition.x + mCollisionRect.left, mPosition.y + mCollisionRect.top); - shape.setFillColor(sf::Color(150, 50, 50, 50)); - window.draw(shape); - - sf::CircleShape center {6}; - center.setFillColor(sf::Color::Red); - center.setOrigin(center.getRadius(), center.getRadius()); - center.setPosition(mPosition); - window.draw(center); -#endif -} - - -void Player::handleEvents(const sf::Event& event) -{ - mpState->handleEvents(this, event); -} - -bool Player::handleCollision(const Block& rect) -{ - sf::FloatRect playerRect = {mPosition.x + mCollisionRect.left, mPosition.y + mCollisionRect.top, mCollisionRect.width, mCollisionRect.height}; - - float overlapx1 = playerRect.left + playerRect.width - rect.mBlock.left; - float overlapx2 = rect.mBlock.left + rect.mBlock.width - playerRect.left; - float overlapy1 = playerRect.top + playerRect.height - rect.mBlock.top; - float overlapy2 = rect.mBlock.top + rect.mBlock.height - playerRect.top; - - if (overlapx1 < 0 || overlapx2 < 0 || overlapy1 < 0 || overlapy2 < 0) - return false; - - - int minOverlapDirection = 0; - float minOvelap = overlapx1; - if (overlapx2 < minOvelap) {minOverlapDirection = 1; minOvelap = overlapx2;} - if (overlapy1 < minOvelap) {minOverlapDirection = 2; minOvelap = overlapy1;} - if (overlapy2 < minOvelap) {minOverlapDirection = 3;} - - switch (minOverlapDirection) - { - case 0: - mPosition.x -= overlapx1 - 1; - if (mVelocity.y > 0 && playerRect.top < rect.mBlock.top + Hooked::kMaxHookOffset && playerRect.top > rect.mBlock.top - Hooked::kMaxHookOffset) - { - mpState->hook(this); - } - break; - case 1: - mPosition.x += overlapx2 - 1; - if (mVelocity.y > 0 && playerRect.top < rect.mBlock.top + Hooked::kMaxHookOffset && playerRect.top > rect.mBlock.top - Hooked::kMaxHookOffset) - { - mpState->hook(this); - } - break; - case 2: - mPosition.y -= overlapy1 - 1; - mVelocity.y = 0; - mVelocity.y = 0; - mpState->hitGround(this); - break; - case 3: - mPosition.y += overlapy2 - 1; - if (mVelocity.y < 0) - { - mVelocity.y = 0; - mVelocity.y = 0; - } - break; - } - return true; -} - -void Player::handleAllCollisions(std::vector& blocks) -{ - mIsColliding = false; - bool toRemove; - auto it = blocks.begin(); - /* Remove destructable blocks */ - while (it != blocks.end()) { - toRemove = false; - if (handleCollision(*it)) { - if (it->mIsDestructable && mIsAttacking && - (((it->mBlock.left < mPosition.x) && !mIsFacedRight) || - ((it->mBlock.left > mPosition.x) && mIsFacedRight)) && - (it->mBlock.top < mPosition.y + mCollisionRect.height) - ) { - toRemove = true; - } - mIsColliding = true; - } - if (toRemove) { - it = blocks.erase(it); - } - else - it++; - } - - if (!mIsColliding) - mpState->startFalling(this); -} - - -Player::~Player() -{ - delete mpState; -} - diff --git a/term2/seminar03_state/src/player.hpp b/term2/seminar03_state/src/player.hpp deleted file mode 100644 index e5f13d3..0000000 --- a/term2/seminar03_state/src/player.hpp +++ /dev/null @@ -1,56 +0,0 @@ -#pragma once - -#include -#include -#include "player_states.hpp" -#include "block.hpp" - -class PlayerState; - -class Player -{ -public: - - Player(sf::Vector2f position); - - sf::Vector2f getCenter() const; - void applyVelocity(sf::Vector2f velocity); - - void update(float dt); - void draw(sf::RenderWindow& window); - void handleEvents(const sf::Event& event); - bool handleCollision(const Block& rect); - void handleAllCollisions(std::vector& blocks); - bool isAttacking(); - ~Player(); - - friend class PlayerState; - friend class Idle; - friend class Running; - friend class Falling; - friend class Sliding; - friend class Hooked; - friend class Sitting; - friend class FirstAttack; - friend class SecondAttack; - friend class ThirdAttack; - - -private: - - sf::Vector2f mPosition {0, 0}; - sf::Vector2f mVelocity {0, 0}; - - bool mIsColliding {false}; - sf::FloatRect mCollisionRect {-40, -60, 80, 120}; - - PlayerState* mpState {nullptr}; - sf::Texture mTexture {}; - sf::Sprite mSprite {}; - float mScaleFactor {1}; - bool mIsFacedRight {true}; - bool mIsAttacking {false}; - - - void setState(PlayerState* pNewState); -}; diff --git a/term2/seminar03_state/src/player_states.cpp b/term2/seminar03_state/src/player_states.cpp deleted file mode 100644 index f67d7e5..0000000 --- a/term2/seminar03_state/src/player_states.cpp +++ /dev/null @@ -1,602 +0,0 @@ -#include -#include -#include -#include -#include "animation.hpp" -#include "player.hpp" -#include "player_states.hpp" - -using std::cout, std::endl; - -PlayerState::PlayerState() {} - - -void PlayerState::updateSprite(sf::Sprite& sprite, bool isFacedRight, float scaleFactor) -{ - mAnimation.updateSprite(sprite); - - if (!isFacedRight) - { - sprite.setScale({-scaleFactor, scaleFactor}); - } - else - { - sprite.setScale({scaleFactor, scaleFactor}); - } -} - - -void PlayerState::jump(Player* player) -{ - player->mPosition.y -= 1; - player->mVelocity.y = -kJumpingVelocity; - startFalling(player); -} - -PlayerState::~PlayerState() -{ -} - - - -sf::FloatRect operator*(float x, sf::FloatRect rect) -{ - return {x * rect.left, x * rect.top, x * rect.width, x * rect.height}; -} - - - -Idle::Idle(Player* player) -{ - player->mVelocity = {0, 0}; - mAnimation = Animation(); - mAnimation.setAnimationSpeed(6); - mAnimation.addTextureRect({ 14, 6, 21, 30}); - mAnimation.addTextureRect({ 64, 6, 21, 30}); - mAnimation.addTextureRect({114, 6, 21, 30}); - mAnimation.addTextureRect({164, 6, 21, 30}); - - player->mCollisionRect = player->mScaleFactor * sf::FloatRect(-10, -15, 20, 30); - - cout << "Creating Idle state" << endl; -} - - -void Idle::hook(Player* player) -{ -} - -void Idle::update(Player* player, float dt) -{ - mAnimation.update(dt); - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) || sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) - { - player->setState(new Running(player)); - } -} - -void Idle::handleEvents(Player* player, const sf::Event& event) -{ - if (event.type == sf::Event::KeyPressed) - { - if (event.key.code == sf::Keyboard::Left || event.key.code == sf::Keyboard::Right) - { - player->setState(new Running(player)); - } - - else if (event.key.code == sf::Keyboard::Space) - { - jump(player); - } - else if (event.key.code == sf::Keyboard::LShift) - { - player->mVelocity.x = player->mIsFacedRight ? -100 : 100; - player->setState(new Sitting(player)); - } - else if (event.key.code == sf::Keyboard::X) - { - player->setState(new FirstAttack(player)); - } - } -} - -void Idle::startFalling(Player* player) -{ - player->setState(new Falling(player)); -} - -void Idle::hitGround(Player* player) -{ -} - - - - - - - - - -Running::Running(Player* player) : PlayerState() -{ - mRunningSpeed = 900; - mAnimation = Animation(); - mAnimation.setAnimationSpeed(12); - mAnimation.addTextureRect({ 67, 45, 20, 27}); - mAnimation.addTextureRect({116, 46, 20, 27}); - mAnimation.addTextureRect({166, 48, 20, 27}); - mAnimation.addTextureRect({217, 45, 20, 27}); - mAnimation.addTextureRect({266, 46, 20, 27}); - mAnimation.addTextureRect({316, 48, 20, 27}); - - player->mCollisionRect = player->mScaleFactor * sf::FloatRect(-10, -15, 20, 30);; - - cout << "Creating Running state" << endl; -} - -void Running::hook(Player* player) -{ -} - - -void Running::update(Player* player, float dt) -{ - mAnimation.update(dt); - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) - { - player->mVelocity.x = -mRunningSpeed; - player->mIsFacedRight = false; - } - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) - { - player->mVelocity.x = mRunningSpeed; - player->mIsFacedRight = true; - } -} - -void Running::handleEvents(Player* player, const sf::Event& event) -{ - if (event.type == sf::Event::KeyPressed) - { - if (event.key.code == sf::Keyboard::Space) - { - jump(player); - return; - } - - else if (event.key.code == sf::Keyboard::LShift) - { - player->setState(new Sliding(player)); - } - else if (event.key.code == sf::Keyboard::X) - { - player->setState(new FirstAttack(player)); - } - - } - else if (event.type == sf::Event::KeyReleased) - { - if (event.key.code == sf::Keyboard::Left && !sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) - { - player->setState(new Idle(player)); - player->mVelocity.x = 0; - } - - else if (event.key.code == sf::Keyboard::Right && !sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) - { - player->setState(new Idle(player)); - player->mVelocity.x = 0; - } - } -} - -void Running::startFalling(Player* player) -{ - player->setState(new Falling(player)); -} - -void Running::hitGround(Player* player) -{ -} - - - - - - - -Sliding::Sliding(Player* player) : PlayerState() -{ - if (player->mVelocity.x > 0) - player->mVelocity.x = kSlidingVelocity; - else if (player->mVelocity.x < 0) - player->mVelocity.x = -kSlidingVelocity; - - mAnimation = Animation(Animation::AnimationType::OneIteration); - mAnimation.setAnimationSpeed(10); - mAnimation.addTextureRect({155, 119, 34, 28}); - mAnimation.addTextureRect({205, 119, 34, 28}); - mAnimation.addTextureRect({255, 119, 34, 28}); - mAnimation.addTextureRect({307, 119, 34, 28}); - mAnimation.addTextureRect({ 9, 156, 34, 28}); - - player->mCollisionRect = sf::FloatRect(-80, -20, 160, 80); - player->mCollisionRect = player->mScaleFactor * sf::FloatRect(-20, -5, 40, 20);; - mCurrentTime = kSlidingTime; - - cout << "Creating Sliding state" << endl; -} - -void Sliding::hook(Player* player) -{ -} - - -void Sliding::update(Player* player, float dt) -{ - mAnimation.update(dt); - player->mVelocity.x *= kVelocityDecay; - mCurrentTime -= dt; - if (mCurrentTime < 0 && player->mIsColliding) - { - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) || sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) - player->setState(new Running(player)); - else - player->setState(new Idle(player)); - return; - } -} -void Sliding::handleEvents(Player* player, const sf::Event& event) -{ - if (event.type == sf::Event::KeyPressed) - { - if (event.key.code == sf::Keyboard::Left || event.key.code == sf::Keyboard::Right) - player->setState(new Running(player)); - - - if (event.key.code == sf::Keyboard::Space && player->mIsColliding) - { - jump(player); - player->setState(new Falling(player)); - } - } -} - -void Sliding::startFalling(Player* player) -{ - -} - -void Sliding::hitGround(Player* player) -{ -} - - - - - - - -Falling::Falling(Player* player) : PlayerState() -{ - mAnimation = Animation(); - mAnimation.setAnimationSpeed(12); - mAnimation.addTextureRect({321, 155, 15, 26}); - - player->mCollisionRect = player->mScaleFactor * sf::FloatRect(-10, -15, 20, 30);; - - cout << "Creating Falling state" << endl; -} - -void Falling::hook(Player* player) -{ - player->setState(new Hooked(player)); -} - - -void Falling::update(Player* player, float dt) -{ - mAnimation.update(dt); - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) - { - player->mVelocity.x = -kHorizontalVelocity; - player->mIsFacedRight = false; - } - - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) - { - player->mVelocity.x = kHorizontalVelocity; - player->mIsFacedRight = true; - } -} - -void Falling::handleEvents(Player* player, const sf::Event& event) -{ - if (event.type == sf::Event::KeyPressed) - { - if (event.key.code == sf::Keyboard::Space && !hasJumped) { - kJumpingVelocity = 1000; - jump(player); - hasJumped = true; - } - } -} - -void Falling::startFalling(Player* player) -{ -} - -void Falling::hitGround(Player* player) -{ - player->setState(new Idle(player)); -} - - - - - - - -Hooked::Hooked(Player* player) : PlayerState() -{ - mAnimation = Animation(Animation::AnimationType::OneIteration); - mAnimation.setAnimationSpeed(12); - mAnimation.addTextureRect({ 70, 151, 16, 34}); - mAnimation.addTextureRect({119, 151, 16, 34}); - mAnimation.addTextureRect({169, 151, 16, 34}); - mAnimation.addTextureRect({219, 151, 16, 34}); - - player->mCollisionRect = player->mScaleFactor * sf::FloatRect(-10, -15, 20, 30);; - - cout << "Creating Hooked state" << endl; -} - -void Hooked::hook(Player* player) -{ -} - - -void Hooked::update(Player* player, float dt) -{ - player->mVelocity = {0, 0}; - mAnimation.update(dt); -} - -void Hooked::handleEvents(Player* player, const sf::Event& event) -{ - if (event.type == sf::Event::KeyPressed) - { - if (event.key.code == sf::Keyboard::Space) - jump(player); - - else if (event.key.code == sf::Keyboard::Down) - { - player->mVelocity.x = player->mIsFacedRight ? -100 : 100; - player->setState(new Falling(player)); - } - } -} - -void Hooked::startFalling(Player* player) -{ - player->setState(new Falling(player)); -} - -void Hooked::hitGround(Player* player) -{ - player->setState(new Idle(player)); -} - - -/* Sitting */ -Sitting::Sitting(Player* player) : PlayerState() -{ - mAnimation = Animation(); - mAnimation.setAnimationSpeed(4); - - mAnimation.addTextureRect({168, 340, 18, 30}); - mAnimation.addTextureRect({219, 340, 18, 30}); - mAnimation.addTextureRect({267, 340, 18, 30}); - - player->mCollisionRect = player->mScaleFactor * sf::FloatRect(-10, -10, 20, 25); - cout << "Creating Sitting state" << endl; -} - -void Sitting::update(Player* player, float dt) -{ - player->mVelocity = {0, 0}; - mAnimation.update(dt); -} - -void Sitting::handleEvents(Player* player, const sf::Event& event) -{ - if (event.type == sf::Event::KeyPressed) - { - if (event.key.code == sf::Keyboard::LShift) - { - player->mVelocity.x = player->mIsFacedRight ? -100 : 100; - player->setState(new Idle(player)); - } - } -} - -void Sitting::hook(Player* player) {} - -void Sitting::startFalling(Player* player) {} - -void Sitting::hitGround(Player* player) {} - - - -/* FirstAttack */ -FirstAttack::FirstAttack(Player* player) : PlayerState() -{ - if (player->mVelocity.x > 0) - player->mVelocity.x = kSlidingVelocity; - else if (player->mVelocity.x < 0) - player->mVelocity.x = -kSlidingVelocity; - - mAnimation = Animation(Animation::AnimationType::OneIteration); - - mAnimation.setAnimationSpeed(6); - - mAnimation.addTextureRect({56, 222, 30, 38}); - mAnimation.addTextureRect({114, 222, 36, 38}); - mAnimation.addTextureRect({164, 222, 28, 38}); - mAnimation.addTextureRect({214, 222, 20, 38}); - mAnimation.addTextureRect({264, 222, 20, 38}); - - player->mCollisionRect = player->mScaleFactor * sf::FloatRect(-20, -20, 36, 38); - player->mIsAttacking = true; - cout << "Creating FirstAttack state" << endl; -} - -void FirstAttack::update(Player* player, float dt) -{ - mAnimation.update(dt); - player->mVelocity.x *= kVelocityDecay; - - if (mAnimation.hasEnded() && player->mIsColliding) - { - if (mContinue) - player->setState(new SecondAttack(player)); - else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) || sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { - player->mIsAttacking = false; - player->setState(new Running(player)); - } - else { - player->mIsAttacking = false; - player->setState(new Idle(player)); - } - return; -} -} - -void FirstAttack::handleEvents(Player* player, const sf::Event& event) -{ - if (event.type == sf::Event::KeyPressed) - { - if (event.key.code == sf::Keyboard::X) - { - mContinue = true; - } - } -} - -void FirstAttack::hook(Player* player) {} - -void FirstAttack::startFalling(Player* player) {} - -void FirstAttack::hitGround(Player* player) {} - -/* SecondAttack */ -SecondAttack::SecondAttack(Player* player) : PlayerState() -{ - if (player->mVelocity.x > 0) - player->mVelocity.x = kSlidingVelocity; - else if (player->mVelocity.x < 0) - player->mVelocity.x = -kSlidingVelocity; - - mAnimation = Animation(Animation::AnimationType::OneIteration); - - mAnimation.setAnimationSpeed(6); - - mAnimation.addTextureRect({12, 265, 20, 30}); - mAnimation.addTextureRect({58, 265, 40, 30}); - mAnimation.addTextureRect({102, 265, 32, 30}); - mAnimation.addTextureRect({152, 265, 32, 30}); - - player->mCollisionRect = player->mScaleFactor * sf::FloatRect(-20, -20, 36, 36); - cout << "Creating SecondAttack state" << endl; -} - -void SecondAttack::update(Player* player, float dt) -{ - mAnimation.update(dt); - player->mVelocity.x *= kVelocityDecay; - - if (mAnimation.hasEnded() && player->mIsColliding) - { - if (mContinue) - player->setState(new ThirdAttack(player)); - else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) || sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { - player->mIsAttacking = false; - player->setState(new Running(player)); - } - else { - player->mIsAttacking = false; - player->setState(new Idle(player)); - } - return; -} -} - -void SecondAttack::handleEvents(Player* player, const sf::Event& event) -{ - if (event.type == sf::Event::KeyPressed) - { - if (event.key.code == sf::Keyboard::X) - { - mContinue = true; - } - } -} - -void SecondAttack::hook(Player* player) {} - -void SecondAttack::startFalling(Player* player) {} - -void SecondAttack::hitGround(Player* player) {} - - -/* ThirdAttack */ -ThirdAttack::ThirdAttack(Player* player) : PlayerState() -{ - if (player->mVelocity.x > 0) - player->mVelocity.x = kSlidingVelocity; - else if (player->mVelocity.x < 0) - player->mVelocity.x = -kSlidingVelocity; - - mAnimation = Animation(Animation::AnimationType::OneIteration); - - mAnimation.setAnimationSpeed(6); - mAnimation.addTextureRect({152, 265, 32, 30}); - mAnimation.addTextureRect({215, 265, 23, 30}); - mAnimation.addTextureRect({266, 265, 22, 30}); - mAnimation.addTextureRect({298, 268, 52, 30}); - mAnimation.addTextureRect({1, 302, 32, 30}); - mAnimation.addTextureRect({47, 302, 36, 30}); - mAnimation.addTextureRect({96, 302, 38, 30}); - - - player->mCollisionRect = player->mScaleFactor * sf::FloatRect(-20, -20, 52, 36); - - cout << "Creating ThirdAttack state" << endl; -} - -void ThirdAttack::update(Player* player, float dt) -{ - mAnimation.update(dt); - player->mVelocity.x *= kVelocityDecay; - - if (mAnimation.hasEnded() && player->mIsColliding) - { - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) || sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { - player->mIsAttacking = false; - player->setState(new Running(player)); - } - else { - player->mIsAttacking = false; - player->setState(new Idle(player)); - } - return; -} -} - -void ThirdAttack::handleEvents(Player* player, const sf::Event& event) {} - -void ThirdAttack::hook(Player* player) {} - -void ThirdAttack::startFalling(Player* player) {} - -void ThirdAttack::hitGround(Player* player) {} diff --git a/term2/seminar03_state/src/player_states.hpp b/term2/seminar03_state/src/player_states.hpp deleted file mode 100644 index 36e9e23..0000000 --- a/term2/seminar03_state/src/player_states.hpp +++ /dev/null @@ -1,178 +0,0 @@ -#pragma once - -#include -#include -#include "animation.hpp" -#include "player.hpp" - -class Player; - -class PlayerState -{ -public: - PlayerState(); - - virtual void update(Player* player, float dt) = 0; - virtual void handleEvents(Player* player, const sf::Event& event) = 0; - virtual void hook(Player* player) = 0; - virtual void startFalling(Player* player) = 0; - virtual void hitGround(Player* player) = 0; - virtual ~PlayerState(); - - void updateSprite(sf::Sprite& sprite, bool isFacedRight, float scaleFactor); - -protected: - Animation mAnimation; - - float kJumpingVelocity = 1500; - - void jump(Player* player); -}; - - -class Idle : public PlayerState -{ -public: - Idle(Player* player); - - void update(Player* player, float dt); - void handleEvents(Player* player, const sf::Event& event); - void hook(Player* player); - void startFalling(Player* player); - void hitGround(Player* player); - -private: -}; - - -class Running : public PlayerState -{ -public: - Running(Player* player); - void update(Player* player, float dt); - void handleEvents(Player* player, const sf::Event& event); - void hook(Player* player); - void startFalling(Player* player); - void hitGround(Player* player); - -private: - float mRunningSpeed; -}; - - -class Sliding : public PlayerState -{ - -public: - - Sliding(Player* player); - void update(Player* player, float dt); - void handleEvents(Player* player, const sf::Event& event); - void hook(Player* player); - void startFalling(Player* player); - void hitGround(Player* player); - -private: - - float mCurrentTime; - static constexpr float kSlidingTime = 0.50; - static constexpr float kSlidingVelocity = 2000; - static constexpr float kVelocityDecay = 0.99; -}; - - -class Falling : public PlayerState -{ -public: - Falling(Player* player); - void update(Player* player, float dt); - void handleEvents(Player* player, const sf::Event& event); - void hook(Player* player); - void startFalling(Player* player); - void hitGround(Player* player); - -private: - bool hasJumped = false; - static constexpr float kHorizontalVelocity = 800; -}; - - - -class Hooked : public PlayerState -{ -public: - - static constexpr float kMaxHookOffset = 15; - - Hooked(Player* player); - void update(Player* player, float dt); - void handleEvents(Player* player, const sf::Event& event); - void hook(Player* player); - void startFalling(Player* player); - void hitGround(Player* player); -}; - - -class Sitting : public PlayerState -{ -public: - Sitting(Player* player); - void update(Player* player, float dt); - void handleEvents(Player* player, const sf::Event& event); - void hook(Player* player); - void startFalling(Player* player); - void hitGround(Player* player); -}; - -class FirstAttack : public PlayerState -{ -public: - FirstAttack(Player* player); - void update(Player* player, float dt); - void handleEvents(Player* player, const sf::Event& event); - void hook(Player* player); - void startFalling(Player* player); - void hitGround(Player* player); - -private: - - float mCurrentTime; - static constexpr float kSlidingVelocity = 2000; - static constexpr float kVelocityDecay = 0.99; - bool mContinue = false; -}; - -class SecondAttack : public PlayerState -{ -public: - SecondAttack(Player* player); - void update(Player* player, float dt); - void handleEvents(Player* player, const sf::Event& event); - void hook(Player* player); - void startFalling(Player* player); - void hitGround(Player* player); - -private: - - float mCurrentTime; - static constexpr float kSlidingVelocity = 2000; - static constexpr float kVelocityDecay = 0.99; - bool mContinue = false; -}; - -class ThirdAttack : public PlayerState -{ -public: - ThirdAttack(Player* player); - void update(Player* player, float dt); - void handleEvents(Player* player, const sf::Event& event); - void hook(Player* player); - void startFalling(Player* player); - void hitGround(Player* player); - -private: - - float mCurrentTime; - static constexpr float kSlidingVelocity = 2000; - static constexpr float kVelocityDecay = 0.99; -}; diff --git a/term2/seminar03_state/src/world.hpp b/term2/seminar03_state/src/world.hpp deleted file mode 100644 index 06267b4..0000000 --- a/term2/seminar03_state/src/world.hpp +++ /dev/null @@ -1,76 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include "player.hpp" -#include "player_states.hpp" -#include "block.hpp" - -class World -{ -public: - - void addBlock(Block block) - { - mBlocks.push_back(block); - } - - void setView() - { - sf::Vector2f playerCenter = mPlayer.getCenter(); - float mViewRatio = 0.6; - if (playerCenter.x > mView.getCenter().x + mViewRatio * mView.getSize().x / 2) - mView.move({playerCenter.x - mView.getCenter().x - mViewRatio * mView.getSize().x / 2, 0}); - - else if (playerCenter.x < mView.getCenter().x - mViewRatio * mView.getSize().x / 2) - mView.move({playerCenter.x - mView.getCenter().x + mViewRatio * mView.getSize().x / 2, 0}); - - - if (playerCenter.y > mView.getCenter().y + mViewRatio * mView.getSize().y / 2) - mView.move({0, playerCenter.y - mView.getCenter().y - mViewRatio * mView.getSize().y / 2}); - - else if (playerCenter.y < mView.getCenter().y - mViewRatio * mView.getSize().y / 2) - mView.move({0, playerCenter.y - mView.getCenter().y+ mViewRatio * mView.getSize().y / 2}); - - } - - void update(float dt) - { - setView(); - mPlayer.applyVelocity({0, mGravity * dt}); - mPlayer.update(dt); - mPlayer.handleAllCollisions(mBlocks); - } - - void draw(sf::RenderWindow& window) - { - static sf::RectangleShape blockShape; - blockShape.setFillColor(sf::Color(58, 69, 55)); - - window.setView(mView); - - for (const Block& b : mBlocks) - { - blockShape.setPosition(b.mBlock.left, b.mBlock.top); - blockShape.setSize({b.mBlock.width, b.mBlock.height}); - window.draw(blockShape); - } - mPlayer.draw(window); - } - - void handleEvents(const sf::Event& event) - { - mPlayer.handleEvents(event); - } - - - -private: - std::vector mBlocks {}; - Player mPlayer {{400, 400}}; - float mGravity {3600}; - - sf::View mView {sf::FloatRect(0, 0, 1200, 900)}; -};