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

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

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

Ответ
 
Опции темы
Старый 15.09.2007, 15:46   #46
Magus
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 823
Написано 101 полезных сообщений
(для 205 пользователей)
Re: Алгоритм игры Lines

for (i1=1;i1<15;i1++)
{
for (int i2=1;i2<15;i2++)
Опять 25!
(Offline)
 
Ответить с цитированием
Старый 15.09.2007, 15:49   #47
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Алгоритм игры Lines

while (true)
{
x=rand()%14;
y=rand()%14;//Рандомно определяем x и y координаты нового добавляемого шарика
if (!g[x][y])
{
g[x][y]=rand()%7+1;//Если место пусто, то добавляем шар
break;
}
}
Приведи код к нормальному стилю!
----------
так и не понял: у тебя индексация элементов матрицы с нуля или с 1 ?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 15.09.2007, 16:32   #48
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Алгоритм игры Lines

addBall(int sBall)
{
  int x,y,c; 
  for (int k=0;k<sBall;k++)
     {
         do {     
            x=rand()%14;
            y=rand()%14;
            c=rand()%7+1;
          } while(!SetBall(x,y,c))
      }
}

//или в цикле попроще: while(!SetBall(rand()%14,rand()%14,rand()%7+1))

int setBall(int x,int y,int c)
{
  if(isEmptyPosition(x,y)) 
  {
       g[x][y] = c;
        return true;
  }
   return false;
}
Или типа такого, писал в браузере, возможны ошибки))) А я вообще вот подумал: ход компа это лана-фигня, а вот ход игрок посложнее будет ,ч чуть ли не A* надо использовать... впрочем и тут я оставляю за собой право на ошибку)))
"так и не понял: у тебя индексация элементов матрицы с нуля или с 1 ?" -присоединяюсь к вопросу.
(Offline)
 
Ответить с цитированием
Старый 15.09.2007, 17:15   #49
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines

Опять 25!
Да! Потому, что вариант
for (i1=1;i1<14;i1++)
дает следующий глюк: шары выводятся так же не на игровом поле!
(Offline)
 
Ответить с цитированием
Старый 15.09.2007, 17:30   #50
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines


Sorry, но я с такой конструкцией еще не сталкивался!
while (true)
{
...
break;
}
и с такой тоже!
if (!g[x][y])
{
...
break;
}
(Offline)
 
Ответить с цитированием
Старый 15.09.2007, 17:45   #51
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Алгоритм игры Lines

Сообщение от Alex_90
Sorry, но я с такой конструкцией еще не сталкивался!
и с такой тоже!
1. while(true) или while(1) - бесконечный цикл.
2. break - команда для выхода из бесконечного цикла.(не только)
3. if(что-то-там) break; - выход из цикла по соблюдении условия.

Бесплатный совет(впрочем как и все остальные): используй такие определения
#define SIZEX 14
#define SIZEY 14
тогда
for(x=0;x<SIZEX;x++)
x = rand() % SIZEX
по-моему намного читабельнее, как ты считаешь?
(Offline)
 
Ответить с цитированием
Старый 15.09.2007, 20:59   #52
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines

Код добавления шаров исправил, но все равно выводится в основном не по 3 а по 4 шара (а требуется по 3):
//Добавляем шары
int x,y=0;//Добавляем переменные, которым присваиваем значение "0"
bool r;//Переменная состояния клетки (занята-свободна)
for (int k=1;k<4;k++)//Добаляем 3 шара
{
r=false;//По умолчанию это место уже занято чем либо
while (true)
{
x=rand()%m1;
y=rand()%m1;//Рандомно определяем x и y координаты нового добавляемого шарика
if (g[x][y]==0)
{
g[x][y]=rand()%7+1;;//Если место пусто, то добавляем шар
break;
}
}
//Теперь опять может наступисть проигрыш игрока
//Проверяем вариант проигрыша игрока
for (i1=1;i1<m2;i1++)
{
for (int i2=1;i2<m2;i2++)
{
if (g[i1][i2]==0)
{
proigrish=true;
break;
}
}
}
}
m1=14
m2=15
(Offline)
 
Ответить с цитированием
Старый 15.09.2007, 21:12   #53
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Алгоритм игры Lines

while(!answer){
"так и не понял: у тебя индексация элементов матрицы с нуля или с 1 ?" -присоединяюсь к вопросу.
}
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 15.09.2007, 21:25   #54
haedim
Разработчик
 
Регистрация: 16.09.2006
Сообщений: 354
Написано 10 полезных сообщений
(для 2 пользователей)
Re: Алгоритм игры Lines

Согласен с impersonalis. Другой причины здесь не вижу.
(Offline)
 
Ответить с цитированием
Старый 15.09.2007, 21:43   #55
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Алгоритм игры Lines

47 и 48 посты ответ на твой вопрос, ответь же наконец и на наш вопрос! Это одна из самых тонких вещей в С++, если указываешь размер массива N, то последний элемент массива array[N-1](!!!), потому что счет идет с нуля array[0], array[1] ... array[9].
Мы написали тебе полный алгоритм хода компьютера. Просто перечитай, и все поймешь. С уважением.
(Offline)
 
Ответить с цитированием
Старый 20.09.2007, 21:33   #56
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines


Итак:
  1. Идексация массива идет от 1 до 15 (так как от одного до 14 (что прямо указанно в моем сообщении выше) вызывает глюк - смещение шаров (при отрисовке это видно) на одну клетку назад. Шар который должен выводиться в первом ряду клеток выводится вообще перед полем!!!). Объявляется вы файле Var.h массив так:
    int g[14][14];
  2. Функция HodCompa (), как наверно можно догадаться, не единственная (есть HodIgroka (), Otrisovka (), Shphere (), отображающаяя шар на экране с текстурами, подсветкой и другими прибомбасами). Дробить существующую функцию HodCpmpa () на несколько не буду, потому что тогда что либо найти в свем коде точно невозможно!!!
(Offline)
 
Ответить с цитированием
Старый 20.09.2007, 21:45   #57
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: Алгоритм игры Lines

Итак:
1.Индексация массива идет не с 1 до 15, а с 0 до 13 перечитай главу про массивы. Так простейший одномерный массив типа инт
int array[5] = { 1, 2, 3, 4, 5 }
так вот array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
2. Дело твоё. Я же советую как проще...
(Offline)
 
Ответить с цитированием
Старый 20.09.2007, 21:48   #58
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines

с 0 до 13
Даже так!!!

(Offline)
 
Ответить с цитированием
Старый 20.09.2007, 23:11   #59
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Алгоритм игры Lines

Сообщение от Alex_90
Идексация массива идет от 1 до 15
x=rand()%m1;
y=rand()%m1;//Рандомно определяем x и y координаты нового добавляемого шарика
x=0..(m1-1)
y=0..(m1-1)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 22:30   #60
Alex_90
Знающий
 
Регистрация: 05.02.2007
Сообщений: 201
Написано одно полезное сообщение
(для 2 участников)
Re: Алгоритм игры Lines

НУ НАКОНЕЦ-ТО, ГЛЮК ИСПРАВИЛ!!!
Но почему-то обнаружился новый: шары при каждом вызове функции выводятся шары в одни и те же места?
Что еще более удивительно в WinMain у меня есть следующая строка:
srand(GetTickCount());
прямо запрещающая подобные выходки rand.
Как заставить шары выводиться в разных метстах?
(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, время: 02:07.


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