Помогите в создании простой игры на С#
У меня такая проблема. Для курсовика по ООП решил написать небольшую игру, не претендуя на оригинальность, решил написать что-то наподобие игры "Galaxy". Т.е. космический корабль летает убивает врагов и т.д. :) Проблема такая: как я понимаю все процессы движения врагов, корабля, ракеты и всё такое должны работать одновременно. Получается для каждого процесса нужно создавать свой поток ?:confused: Т.е. если 10 врагов, то и 10 потоков будет?:confused: Враги и всё такое я думал сделать в виде picturebox со вставленной картинкой. Если можно напишите как это в коде выглядит простой пример какой-нибудь. И вообще реально это написать с базовыми знаниями С# или там надо с DirectX мутить.Посоветуйте что-нибудь пожалуйста. :)
Цитата: DARKW
как я понимаю все процессы движения врагов, корабля, ракеты и всё такое должны работать одновременно. Получается для каждого процесса нужно создавать свой поток ?:confused: Т.е. если 10 врагов, то и 10 потоков будет?
Если кратко и упрощенно:
корабль - структура
враги - массив структур
ракеты - массив структур
структура содержит координаты, вектор скорости
в цикле происходит обработка нажатий клавиш(мыши); изменение координат врагов(поочереди), ракет(поочереди), корабля в соответствии с их векторами скорости; обработка столкновений(проверять все ракеты(поочереди) на близость к врагу или кораблю);генерация случайных событий - создание новых объектов(появляющиеся враги, ракеты врагов), изменение векторов скорости врагов(поочереди);
и в конце перерисовка экрана.
Лучше сделать три потока:
-игрок
-объекты
-враги
Смысл в том, что юзер может ничего не делать, а ракеты, астероиды, какие-либо другие объекты и враги должны перемещаться и жить "своей жизнью"... структуры, возможно имеет смысл заменить на класы...
По-крайней-мере мы так PacMan'а (извращенного) писали... на c++ правда... )
Цитата: BKnight
Кривовато будет работать!
все работало на ура и даже не тормозило...
смысла в создании нескольких потоков нету - разве что для оптимизации под многоядерные процессоры :)
Спасибо за советы.:) Покажите на примере как обрабатывать нажатия кнопок клавиатуры, а то в книгах чё-то не нашёл ничего, и как перерисовать форму.:confused: Спасибо.
У формы есть события KeyPress, KeyUp и KeyDown
Пример простой напишите, ПОЖАЛУЙСТА.
Кидаешь таймер на форму. При тике "двигаешь" своих врагов.. Затем все это перерисовываешь конечно..
Никаких циклов не надо!..
При щелчке на форме, отслеживашь где именно был сделан клик.. - если в это время там находился враг - врагу крендец;),.. ну или отслеживаешь полет пули:)
При срабатывании событий клавиатуры в обработке записываешь коды клавиши (или другую информацию) в какую-нибудь переменную, события возикают асинхронно по отношению к циклу. А в нём ты обрабатываешь переменные, соедржащие информацию с клавишь.