Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 21.09.2007, 22:47   #61
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Алгоритм игры Lines

а с чего ты решил, что шары выводятся в одних и тех же местах? Тем не менее если это так, то я тебе писал функцию isEmptyPos(x,y) посмотри в этой ветке ранее. Она проверяет в позиции [x][y] пустая клетка или нет.
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 22:54   #62
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines


Вероятно вопрос не правильно понят!!!
Шары все время при начальной расстановке при первом вызове функции ставятся в одних и тех же местах! То есть при существующем варианте игра будет всегда ничинаться одинаково!
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 23:07   #63
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Алгоритм игры Lines

Хммм... странно, думаю вот из-за чего: функция srand(GetTickCount()); берет число тиков с начала старта программы а так как старт всегда одинаков одинаковы и числа, впрочем я могу ошибаться. А можешь попробовать сделать так.
srand(time())
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 23:51   #64
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines

Поставитл!
Рузультат:
error C2065: 'time' : undeclared identifier
(Offline)
 
Ответить с цитированием
Старый 22.09.2007, 00:49   #65
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Алгоритм игры Lines

НУ НАКОНЕЦ-ТО, ГЛЮК ИСПРАВИЛ!!!
А мы тебя давно спрашивали про индексы
Но почему-то обнаружился новый: шары при каждом вызове функции выводятся шары в одни и те же места?
Для начала попробуй просто:
#include<time.h>
....
srand(time(NULL));
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 27.10.2007, 23:04   #66
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines

Всем привет
Вот не понял, что я тут назимичел, вероятно что- нибудь не так, потому что при вводе с клавиатуры прога зависает:
Вот как я получаю координаты шара с клавиатуры (Enter):
Из "Var.h":
//Основной массив игры
int g[14][14];
...
int xCl,yCl=1;//Положение курсора на игровом поле
bool razreshenie=false;//Разрешение в игре перемещать курсор
bool shphere_is;//Шар взят
Из "Message.h":
void OnTimer(HWND hwnd)
{

if(keys[VK_ESCAPE])
SendMessage(hwnd, WM_CLOSE,0,0);

SendMessage(hwnd, WM_PAINT, 0, 0);
int xCPos,yCPos;//Объявляем переменные положения курсора на момент начала игры
xCPos=xCl;
yCPos=yCl;
/*обработка анимации*/
if (keys[VK_UP])
{
...
if (mode==2&&razreshenie==true)//Для игры
{
yCl++;
Cursor (xCl,yCl);
}
}
if (keys[VK_DOWN])
{
...
if (mode==2&&razreshenie==true)//Для игры
{
yCl--;
Cursor (xCl,yCl);
}
}
if (keys[VK_RIGHT])
{
...
if (mode==2&&razreshenie==true)//Только для игры
{
xCl++;
Cursor (xCl,yCl);
}
}
if (keys[VK_LEFT])
{
...
if (mode==2&&razreshenie==true)//Только для игры
{
xCl--;
Cursor (xCl,yCl);
}
}
...
if(yCl>14)yCl=14;
if(yCl<1)yCl=1;
if(xCl>14)xCl=14;
if(xCl<1)xCl=1;
...
//Обработка нажатия на кнопки
...
if (keys[VK_RETURN]&&mode==2&&razreshenie==true)
{
if (g[xCl][yCl]!=0)
{
shphere_is=true;
}
}
Из "Graph.h":
void HodIgroca ()
{
...
//Получение места, откуда взят шар
razreshenie=true;//Разрешаем перемещать курсор
...
shphere_is=false;
while (shphere_is!=true )//Проверка, взят ли шар или там ни чего нет
{
}
В последнем цикле в Graph.h содержимое отстутствует: цикл будет жать, пока shphere_is станет равным true, то есть пока не будет взят шар. Если шар взят то программа идет дальше, однако до выбора шара дело не доходит: программа зависает еще на этапе отрисовки окна (видет только фрейм окна на сером фоне). Debuggerom установленно, что этот цикл выполняется до бесконечности.
(Offline)
 
Ответить с цитированием
Старый 27.10.2007, 23:38   #67
Magus
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 823
Написано 101 полезных сообщений
(для 205 пользователей)
Re: Алгоритм игры Lines

Debuggerom установленно, что этот цикл выполняется до бесконечности.
Ясен пень:цикл не передает управления самой программе, а внутри цикла, насколько я вижу. значение sphere_is не меняется.
Таким образом, если у тебя при входе в цикл sphere_is равна 0, получается бесконечный цикл из разряда
while(1)
{
}
(Offline)
 
Ответить с цитированием
Старый 28.10.2007, 21:10   #68
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines

А че можно сделать с этим циком, чтобы он проверял, взят ли шар. Может OnTimer вызывать в содержимом этого цикла?
(Offline)
 
Ответить с цитированием
Старый 29.10.2007, 00:03   #69
Magus
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 823
Написано 101 полезных сообщений
(для 205 пользователей)
Re: Алгоритм игры Lines

Для начала зачем тебе проверять, убрали ли из ячейки шар?
Может, можно найти более простой вариант решения задачи, чем цикл?
(Offline)
 
Ответить с цитированием
Старый 29.10.2007, 22:27   #70
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines

Для начала зачем тебе проверять, убрали ли из ячейки шар?
Я это и не проверяю!
Задача этого цикла дождаться, когда пользователь нажмет Enter, и если там, где был курсор на момент нажатия Enter был шар, то передать управление дальше, а если шара нет, то опять ждать, когда опять будет нажата Enter.
Может, можно найти более простой вариант решения задачи, чем цикл?
Только goto, да и то не уверен. Хотя...
(Offline)
 
Ответить с цитированием
Старый 29.10.2007, 22:50   #71
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Алгоритм игры Lines

while (shphere_is!=true )//Проверка, взят ли шар или там ни чего нет
{
  if(keys[VK_RETURN] && !isEmptyPos(x,y)) shphere_is = true;
}
что-то типа того...
если нажат ентер и клетка не пуста, то ...
__________________
(Offline)
 
Ответить с цитированием
Старый 29.10.2007, 23:49   #72
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines

Именно это и было у меня до того: а фигня тут в том, что пока работает цикл, нажате на клавиши не проверяется, хоть ты по ним кувалдой стучи.
Получается следующее: запускается цикл, проверяется, нажата ли клавиша, показывается, что не нажата, цикл идет по второму кругу, опять проверяется (пользователь уже по Enter кувалдой стучит) - и опять не нажата (так как выполняется цикл, и следовательно не проверяется нажатие на клавишы), и опять цикл идет по новой и так до бесконечности! Так вот как то надо сделать, чтоб и цикл работал, и нажате на клавишы проверялось, а для этого (вероятно) надо разместить проверку на нажатие клавиш прямо внутри цикла, то есть скопировать туда содержимое функции OnTimer (). Но это невозможно, так как программный код увеличится приверно в 2 раза! Может есть другие идеи?
(Offline)
 
Ответить с цитированием
Старый 30.10.2007, 23:55   #73
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines

А все таки, когда может проверяться нажатеие на клавишы?
Только когда не выполняется ни чего дрогого (в данном случа цикл), или всегда должно проверяться?
(Offline)
 
Ответить с цитированием
Старый 31.10.2007, 00:37   #74
Magus
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 823
Написано 101 полезных сообщений
(для 205 пользователей)
Re: Алгоритм игры Lines

так. примерная структура программы на псевдокоде:
WinMain
{
   /*
   инициализация
   */

   while  //основной цикл программы
   {
      /*
       получение сообщений. Пусть сообщение хранится в msg
      */
      switch(msg)
      {
       case WM_KEYDOWN:
            //обработка
       case WM_KEYUP:
            //обработка
       case WM_PAINT:
            //обработка
       case WM_TIMER:
            //обработка
       /*
       и так далее для всех нужных сооббщений
       */
       } //switch
    }  //while
} //WinMain
Надеюсь, отсюда видно, где и как обрабатывается клавиатура.
(Offline)
 
Ответить с цитированием
Старый 01.11.2007, 21:08   #75
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Алгоритм игры Lines

я считаю раз ты взялся за С++ то надо применять ООП-мышление. Так создай класс CField в котором будут содержаться классы ячеек поля игры CCell. Отдельный класс для шаров CBall
[highlight = cpp]
class CField {
// здесь весь код что относится ко всему полю...
}

class CCell {
// здесь все что относится к ячейке
}

class CBall {
// здесь все что относится к шару, координаты там ,цвет, активен ли он и т.д
}
[/hightlight]
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм MD5 Dialogus Библиотеки 7 07.02.2010 15:17
Алгоритм Дейкстры Serega 3D-программирование 6 29.10.2009 20:18
Алгоритм темы на нокиа demon112 Алгоритмика 7 22.05.2009 01:24
Морской бой - алгоритм Matt Merkulov 2D-программирование 3 27.05.2007 00:25
Алгоритм поворота alcosholik Алгоритмика 8 08.09.2005 21:05


Часовой пояс GMT +4, время: 06:23.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com