![]() |
Re: Алгоритм игры Lines
а с чего ты решил, что шары выводятся в одних и тех же местах? Тем не менее если это так, то я тебе писал функцию isEmptyPos(x,y) посмотри в этой ветке ранее. Она проверяет в позиции [x][y] пустая клетка или нет.
|
Re: Алгоритм игры Lines
:stop:
Вероятно вопрос не правильно понят!!! Шары все время при начальной расстановке при первом вызове функции ставятся в одних и тех же местах! То есть при существующем варианте игра будет всегда ничинаться одинаково!:) |
Re: Алгоритм игры Lines
Хммм... странно, думаю вот из-за чего: функция srand(GetTickCount()); берет число тиков с начала старта программы а так как старт всегда одинаков одинаковы и числа, впрочем я могу ошибаться. А можешь попробовать сделать так.
Код:
srand(time()) |
Re: Алгоритм игры Lines
Поставитл!
Рузультат: Цитата:
|
Re: Алгоритм игры Lines
Цитата:
Цитата:
Цитата:
|
Re: Алгоритм игры Lines
Всем привет
Вот не понял, что я тут назимичел, вероятно что- нибудь не так, потому что при вводе с клавиатуры прога зависает: Вот как я получаю координаты шара с клавиатуры (Enter): Из "Var.h": Цитата:
Цитата:
Цитата:
|
Re: Алгоритм игры Lines
Цитата:
Таким образом, если у тебя при входе в цикл sphere_is равна 0, получается бесконечный цикл из разряда while(1) { } |
Re: Алгоритм игры Lines
А че можно сделать с этим циком, чтобы он проверял, взят ли шар. Может OnTimer вызывать в содержимом этого цикла?;)
|
Re: Алгоритм игры Lines
Для начала зачем тебе проверять, убрали ли из ячейки шар?
Может, можно найти более простой вариант решения задачи, чем цикл? |
Re: Алгоритм игры Lines
Цитата:
Задача этого цикла дождаться, когда пользователь нажмет Enter, и если там, где был курсор на момент нажатия Enter был шар, то передать управление дальше, а если шара нет, то опять ждать, когда опять будет нажата Enter. Цитата:
|
Re: Алгоритм игры Lines
Код:
while (shphere_is!=true )//Проверка, взят ли шар или там ни чего нет если нажат ентер и клетка не пуста, то ... |
Re: Алгоритм игры Lines
Именно это и было у меня до того: а фигня тут в том, что пока работает цикл, нажате на клавиши не проверяется, хоть ты по ним кувалдой стучи.
Получается следующее: запускается цикл, проверяется, нажата ли клавиша, показывается, что не нажата, цикл идет по второму кругу, опять проверяется (пользователь уже по Enter кувалдой стучит) - и опять не нажата (так как выполняется цикл, и следовательно не проверяется нажатие на клавишы), и опять цикл идет по новой и так до бесконечности! Так вот как то надо сделать, чтоб и цикл работал, и нажате на клавишы проверялось, а для этого (вероятно) надо разместить проверку на нажатие клавиш прямо внутри цикла, то есть скопировать туда содержимое функции OnTimer (). Но это невозможно, так как программный код увеличится приверно в 2 раза! Может есть другие идеи?;) |
Re: Алгоритм игры Lines
А все таки, когда может проверяться нажатеие на клавишы?;)
Только когда не выполняется ни чего дрогого (в данном случа цикл), или всегда должно проверяться? |
Re: Алгоритм игры Lines
так. примерная структура программы на псевдокоде:
Код:
WinMain |
Re: Алгоритм игры Lines
я считаю раз ты взялся за С++ то надо применять ООП-мышление. Так создай класс CField в котором будут содержаться классы ячеек поля игры CCell. Отдельный класс для шаров CBall
[highlight = cpp] class CField { // здесь весь код что относится ко всему полю... } class CCell { // здесь все что относится к ячейке } class CBall { // здесь все что относится к шару, координаты там ,цвет, активен ли он и т.д } [/hightlight] |
Часовой пояс GMT +4, время: 15:35. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot