![]() |
Алгоритм игры Lines
Алгоритм игры Lines Цитата:
Hello, World! Некоторые еще помнят те времена, когда компьютеры встречались в редких ведомствах. Это были 286, 386, 486 компы с MS-DOS. Печатали тогда в Лексиконе, считали в SuperCalk 4, а из игр у всех стояли PackMan'ы и Lines, причем Lines пользовался гораздо большей популярностью, чем PackMan. С появлением Windows 3.1 Lines сменили пасьянсы.:stop: Были попытки (мне они известны) сделать Windows Lines, однако ни одна версия не вернула себе ту популярность, что была у Dos Lines. Я решил попробывать сделать Lines для Windows средствами OpenGL и пока у меня дела идут отлично. С графикой проблем нет, однако алгоритма, по которому Lines работает у меня нет. Так вот: может у кто знает принцип этого алгоритма, или у кого завалялись исходники того, досовского Lines. (Они были по-моему на pascal).:) |
Re: Алгоритм игры Lines
Цитата:
Цитата:
Код:
Функция Нажатие_На_Кнопку_Мыши З.Ы.по идее, перед перемещением шарика надо бы еще проверять, есть ли путь от шарика к нужной клетке. Но это уже детали. Если надумаешь, то смотри http://pmg.org.ru/ai/navigato.htm http://pmg.org.ru/ai/stout.htm UPD.: есть у меня знакомая девушка, которая лайнс делала на С++. Если найду ее, попрошу сорсы. |
Re: Алгоритм игры Lines
Вложений: 2
В свое время делала Эту игрушку на С++. Остались куски алгоритма. Точно знаю, что там нет мелочей типа итоговой таблицы победителей и т. д. Но сам алгоритм представлен. Надеюсь что мой материал тебе поможет. Есть просьба! как сделаешь свою игру, пришли пожалуйста мне. Заранее спасибо!
|
Re: Алгоритм игры Lines
Незнаю почему мои пост стерли но если тебе нужны исходники у меня есть на Delphi
|
Re: Алгоритм игры Lines
Цитата:
|
Re: Алгоритм игры Lines
Вот сдесь скачаи http://delphigfx.narod.ru/game.htm
|
Re: Алгоритм игры Lines
Спасибо, как ни странно, но я тоже вспомнил вчера про этот сайт. В общем нашел там все, что нужно было. Еще раз спасибо.
|
Re: Алгоритм игры Lines
Всегда пожалуисто :)
|
Re: Алгоритм игры Lines
Цитата:
|
Re: Алгоритм игры Lines
Ничего она не дохлая, только заходил проверял
|
Re: Алгоритм игры Lines
у мну оно не работает
у мну страница открывается , но у мну оно не качается мну растроился |
Re: Алгоритм игры Lines
Цитата:
|
Re: Алгоритм игры Lines
Зашел, работает, все дело в том что там есть такая инфа от 25.03.2002 г. И так, новый адрес httt://delphigfx.mastak.ru перепишите ссылки.
Старый, т.е. этот сервер, обновляться более не будет. Но новый адрес не работает совсем. В общем помер он, потому и глючит. Очень жаль. |
Re: Алгоритм игры Lines
:SOS: ВСЕМ, ВСЕМ, ВСЕМ! Привет всем. Может, кто знает, почему ниже приведенный цикл, исспользуемый мной для поиска собранных линий и их удаления выполняется до бесконечности! Вроде бы я все проверил: явных ерроров нет. Дебаггер при проходе этого цикла выдает следующее: Цитата:
А вот и сам цикл: Код:
:) |
Re: Алгоритм игры Lines
Не поверишь - уменя он выполняется без провисов.
Возможно 3ависит от введённых данных. Ты вообще уверен, что виснет именно этот цикл? Если да , то первое, что бросается в галаза - //Найдена линия из 5 шаров товарищ - так не кодят =/ Раскручивай это нагромождение. |
Re: Алгоритм игры Lines
ОРИЕНТИРОВАНИЕ В ТЕКСТОВОМ ФАЙЛЕ Всем привет. В любой программе часто возникает необходимость сохранять информацию на длительное время, что бы ее можно было воспроизвести при следующем запуске программы. Единственнымм способом сделать это является запись этой информации в файл. Но держать для каждой записи отдельный файл очень нерационально и для конечного пользователя и для программиста, который может просто запутаться, в каком файле что лежит. Гораздо более рационально использовать один-два файла и в них хранить сразу много записей. Информации записать в один файл можно сколько угодно много (до 32мб), а вот считать гораздо сожнее: в паскале был отличный метод ориентирования в файле Seek (f:file,pozitsia:integer); Есть аналогичный метод и в С++, но там у функции fseek сразу три параметра: file,long,int. C первым вопроса нет - это указатель на файл, в котором ориентироваться, а вот что такое второй и третий - не знаю (fseek не документирована ни в одной книге по С++, так как унаследована от С). Может кто знает, как с попощью этой или какой нибудь другой функции ориентироваться в файле? Функция fseek находится в файле stdio.h.:) |
Re: Алгоритм игры Lines
по логике - это направление смещения ( от текущей позиции, начала или конца). Такие задчи я решаю при помощие fstream-класса. Показать?
|
Re: Алгоритм игры Lines
вводим в гугл "fseek c++" и читаем мануал :
http://www.cplusplus.com/reference/c...dio/fseek.html |
Re: Алгоритм игры Lines
Цитата:
Цитата:
|
Re: Алгоритм игры Lines
Alex_90
если у тебя строчки по 50 символов то st+=50 попробуй |
Re: Алгоритм игры Lines
Цитата:
Проверил->Ни какого результата. Все равно он все строчки в одну считывает.Ведь у меня строчки с именами игроков могут быть от 1 до 50 символов, причем, если строчка меньше 50 символов, то до 50 я добавляю пробелами: Цитата:
|
Re: Алгоритм игры Lines
Цитата:
|
Re: Алгоритм игры Lines
А возможно как-то наладить считывание так, что бы он считывал по принципу:
одна строчка в файле - один пункт в списке? |
Re: Алгоритм игры Lines
Возможно. Есть такая функция - EOL(FILE*)
Возвращает true, если ты дошел до конца строки. Насчет типа параметра не уверен, уточни. |
Re: Алгоритм игры Lines
Цитата:
|
Re: Алгоритм игры Lines
Цитата:
|
Re: Алгоритм игры Lines
В MFC незльзя создать переменную для текстового поля типа char*, который требуется для записи в файл функцией f_user.put (char*)
Придется переводить полученное из поля ввода значение типа CString в char*, но как? Наверно, для этого есть какая-нибудь функция?:) |
Re: Алгоритм игры Lines
Цитата:
|
Re: Алгоритм игры Lines
Цитата:
Ошибка, которую выдает Visual Studio: Цитата:
|
Re: Алгоритм игры Lines
Цитата:
-------------------- Цитата:
------------------- (LPTSTR)(LPCTSTR)Add_text юзай если уж так хочешь через CString |
Re: Алгоритм игры Lines
Нельзя!
Я только согодня проверял: для текстовой информации только CString. (У меня Visual Studio 6.0 Servis Pack 5) |
Re: Алгоритм игры Lines
1. См. предыдщий пост (обновил).
2. Покажи как берёшь информацию из тескстового поля. |
Re: Алгоритм игры Lines
int GetDlgItemText( int nID, LPTSTR lpStr, int nMaxCount ) const;
или int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const; чем не подходят? |
Re: Алгоритм игры Lines
|
Re: Алгоритм игры Lines
=/ Вот оэтому многие неоправданно обсирают MFC. А ты ручками кодь)
#30 пост тогда смотри |
Re: Алгоритм игры Lines
:dontknow:
че то фигня какая-то: ошибок не выдает при копмиляции с новыми функциями, однако во время выполнения снимается виндусом. Вот новый код функции: Цитата:
|
Re: Алгоритм игры Lines
char* vsp;
есть, а инициализации оператором new - нет char *vsp=new char[50+1]; |
Re: Алгоритм игры Lines
Привет всем.
У меня в игре есть функция HodCompa (), которая должна проверять вариант проигрыша игрока, и если он не проиграл, то добавить 3 шара.:stop: Удивительно, но все работает за исключением одного: при выполнении этой функции добавляется или 3 или 4 шара. Происхождение 4 шара неизвестно, так же как не известно, как сделать так, чтобы он не появлялся. У меня есть версия, что он всегда выводит по 4 шара, однако один из них выводит за игровым полем (то есть он ставится на не существующий элемент массива). Функция HodCompa() приведена ниже. Так же сообщу, что игровое поле 14*14 клеток. Цитата:
|
Re: Алгоритм игры Lines
Бегло проглядев код, могу сказать. Почему бы не сделать отдельную функцию int PlayerLose() которая проверяет проиграл ли игрок и возращает true при проигрыше. Потом зачем 3 раза проверять в одной функции? и потом ты делаешь , то так
Код:
for (i1=0;i1<14;i1++) Код:
for (int i1=0;i1<14;i1++) |
Re: Алгоритм игры Lines
По поводу расхождения в разных циклах for - исправил, а вот создание отдельной функции для проверки проигрыша игрока считаю явно лишним: тогда я окончательно запутаюсь в своем коде.:) И еще: лишняя проверка проигрыша никогда не мешает - хуже, когда проигрыш останется незамеченным.
Исправляния внес в приведенный выше код. Однако все равно добавляется в основном 4 шара (3 реже)! |
Re: Алгоритм игры Lines
Код:
int isEmptyPosition(int x, int y) |
Re: Алгоритм игры Lines
Во-первых, не
Код:
int isEmptyPosition(int x, int y) а : Код:
int isEmptyPosition(int x, int y) можно сжать до: Код:
int isEmptyPosition(int x, int y) Код:
bool isEmptyPosition(int x, int y) Ну и Код:
temp+=1; Код:
temp++; |
Re: Алгоритм игры Lines
impersonalis, спасибо за поправки, но я это всё знаю. А писал я так, чтобы было понятно новичку. Единственное где я прокоЛОЛся это двойное равно "==" ))) В главной целью моего опуса, было донести, что одна большая функция, может быть разбита на ряд маленьких, которые написать проще.
|
Re: Алгоритм игры Lines
|
Re: Алгоритм игры Lines
:SOS:
Вот фрагмент функции, где добавляются шары: Цитата:
|
Re: Алгоритм игры Lines
Цитата:
|
Re: Алгоритм игры Lines
Код:
while (true) ---------- так и не понял: у тебя индексация элементов матрицы с нуля или с 1 ? |
Re: Алгоритм игры Lines
Код:
addBall(int sBall) "так и не понял: у тебя индексация элементов матрицы с нуля или с 1 ?" -присоединяюсь к вопросу. |
Re: Алгоритм игры Lines
Цитата:
Цитата:
|
Re: Алгоритм игры Lines
:dontknow:
Sorry, но я с такой конструкцией еще не сталкивался! Цитата:
Цитата:
|
Re: Алгоритм игры Lines
Цитата:
2. break - команда для выхода из бесконечного цикла.(не только) 3. if(что-то-там) break; - выход из цикла по соблюдении условия. Бесплатный совет(впрочем как и все остальные): используй такие определения #define SIZEX 14 #define SIZEY 14 тогда for(x=0;x<SIZEX;x++) x = rand() % SIZEX по-моему намного читабельнее, как ты считаешь? |
Re: Алгоритм игры Lines
Код добавления шаров исправил, но все равно выводится в основном не по 3 а по 4 шара (а требуется по 3):
Цитата:
m2=15 |
Re: Алгоритм игры Lines
while(!answer){
Цитата:
|
Re: Алгоритм игры Lines
Согласен с impersonalis. Другой причины здесь не вижу.
|
Re: Алгоритм игры Lines
47 и 48 посты ответ на твой вопрос, ответь же наконец и на наш вопрос! Это одна из самых тонких вещей в С++, если указываешь размер массива N, то последний элемент массива array[N-1](!!!), потому что счет идет с нуля array[0], array[1] ... array[9].
Мы написали тебе полный алгоритм хода компьютера. Просто перечитай, и все поймешь. С уважением. |
Re: Алгоритм игры Lines
:)
Итак:
|
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. Дело твоё. Я же советую как проще... |
Re: Алгоритм игры Lines
Цитата:
|
Re: Алгоритм игры Lines
Цитата:
Код:
x=rand()%m1; y=0..(m1-1) |
Re: Алгоритм игры Lines
НУ НАКОНЕЦ-ТО, ГЛЮК ИСПРАВИЛ!!!
Но почему-то обнаружился новый: шары при каждом вызове функции выводятся шары в одни и те же места? Что еще более удивительно в WinMain у меня есть следующая строка: Цитата:
Как заставить шары выводиться в разных метстах?:) |
Re: Алгоритм игры Lines
а с чего ты решил, что шары выводятся в одних и тех же местах? Тем не менее если это так, то я тебе писал функцию isEmptyPos(x,y) посмотри в этой ветке ранее. Она проверяет в позиции [x][y] пустая клетка или нет.
|
Re: Алгоритм игры Lines
:stop:
Вероятно вопрос не правильно понят!!! Шары все время при начальной расстановке при первом вызове функции ставятся в одних и тех же местах! То есть при существующем варианте игра будет всегда ничинаться одинаково!:) |
Re: Алгоритм игры Lines
Хммм... странно, думаю вот из-за чего: функция srand(GetTickCount()); берет число тиков с начала старта программы а так как старт всегда одинаков одинаковы и числа, впрочем я могу ошибаться. А можешь попробовать сделать так.
Код:
srand(time()) |
Re: Алгоритм игры Lines
Поставитл!
Рузультат: Цитата:
|
Часовой пояс GMT +4, время: 20:12. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot