Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.04.2012, 22:27
Ingeneer2012 Ingeneer2012 вне форума
Прохожий
 
Регистрация: 11.04.2012
Сообщения: 6
Репутация: 10
Лампочка Игра "Вирусы"

Здравствуйте, уважаемые форумчане! Сразу извиняюсь, если перепутал ветку форума для создания топика, но, кажется, эта ветка самое то. В общем в двух словах суть вопроса:
Есть идея игры - надо реализовать.
Теперь поподробнее:
Когда-то давно (в годах 90-х) эту игру мне показал один человек, с которым мы познакомились в Крыму. Для игры нужен был листок бумаги в клетку, ручка и карандаш (или две ручки разного цвета). Сразу говорю - нет, это не игра в "точки". Программный аналог игры я искал в интернете, но так и не смог найти. В общем, я пытался реализовать ее на Delphi 7, но не хватило умений, хотя получалось поначалу. Игра по сути простая, как два пальца, немного по принципу похожа на "сапер" виндовсовский.
В общем, все, кому интересна идея и есть знания (выше среднего) в программировании на Дельфе, пишите в личку или на мой е-маил, все подробно опишу и если надо будет, скину свои наработки (в коде все подробно обозначал, для чего какая переменная или функция).
Единственно, я изначально не планировал коммерческое использование данной программы, поэтому все на добровольных началах и без всякого выкачивания денег в виде "ключей", "лицензии" и прочей ерунды. Максимум - в описании просьба добровольного пожертвования и естественно, имя того, кто примет участвие в реализации идеи (это по желанию))))
Ответить с цитированием
  #2  
Старый 12.04.2012, 08:12
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Да, темой ты ошибся.
Случаем не вот эта вот игрушка: сцылко?
Цитата:
Единственно, я изначально не планировал коммерческое использование данной программы
Промолчу....
Ответить с цитированием
  #3  
Старый 12.04.2012, 10:44
Ingeneer2012 Ingeneer2012 вне форума
Прохожий
 
Регистрация: 11.04.2012
Сообщения: 6
Репутация: 10
По умолчанию

Нет, не та, что по ссылке. Чуть попозже напишу здесь, в чем суть игры. Хотя, если заинтересованных нет, то и смысла тоже нет.
Ответить с цитированием
  #4  
Старый 12.04.2012, 11:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а может заинтересованным лень писать в личку и емайл)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 12.04.2012, 11:59
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

я кажется такую делал, там ставят по очереди по два или три крестика вроде, и можно вражеские зачёркивать
один раз играл в такую под dos, и даже потом начал делать её на дельфи, но там появились какие-то неуловимые баги на пустом месте, поэтому забросил
помню, что сами крестики и зачёркивание делал с использованием случайных чисел, остальное уже забыл

в чем суть игры в любом случае интересно узнать
Ответить с цитированием
  #6  
Старый 12.04.2012, 13:48
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Вот нашел - прикольная.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #7  
Старый 12.04.2012, 14:06
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Вот нашел - прикольная.
Прикольная игрушка!
Ответить с цитированием
  #8  
Старый 12.04.2012, 14:42
Ingeneer2012 Ingeneer2012 вне форума
Прохожий
 
Регистрация: 11.04.2012
Сообщения: 6
Репутация: 10
По умолчанию

Да нет, народ, игра прикольная, только не та)))
В общем, рассказываю (и с картинками на паинте, ибо лень разрисовывать):
Берем лист бумаги в клетку и рисуем стандартное поле 10х10 клеток.

Это стандартное поле, но может быть и 20х20 или в форме ромба или других прикольных размеров.
По углам - стартовые позиции игроков. Вот на рисунке их 2 - красный и синий. Игроков может быть и трое и четверо и даже шестеро, единственно чтобы все были разного цвета.
Правила простые как двери: игроки ходят по-очереди, по три крестика (вируса) за ход. Вирусы должны ставиться только в клетках, соседние с которыми уже заняты вашим вирусом. В результате поначалу получается что-то вроде этого:

Если ты или противник "дотягивается" вирусом к вражескому, так что они на соседних клетках (по вертикали, диагонали, горизонтали и т.д.), то ход на вражеский вирус превращает его в "болото" твоего цвета:

Вот тут красный игрок "схавал" вирус синего и превратил его в свое "болото". Болото статично и ничего с ним сделать уже нельзя, но болото имеет два состояния - "подключенное" и "неподключенное". Подключенное болото - одна или группа соседствующих клеток с болотом одного цвета, возле которого есть хотя бы один вирус соответствующего цвета. Через такое болото можно продолжать дальше "пожирать" вирусы противника.
Вот на этом рисунке

красное болото подключено, а синее (одна клетка) - нет, но так как ход синего игрока, то он может исправить ситуацию в свою пользу. С помощью болот можно делать "консервы" - это когда 1 вирус противника полностью окружен чужим болотом.
В игре проигрывает тот игрок, которому больше некуда походить. В общем, такова концепция игры. Кому не лень, можете попробовать сыграть сами с собой на листке бумаги.
Я пару раз пыталься реализовать эту игру програмно, но на определенном этапе наступал "эпик фэйл".
Ответить с цитированием
  #9  
Старый 12.04.2012, 18:30
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Реализация довольно проста. Например:
Игра идёт по клеткам. Можно либо хранить клетки каждого игрока, либо к каждой клетке её состояние. Второе имхо более логично.
Какие бывают состояния?
0 - свободно.
1 - красный крест
2 - красное болото
3 - синий крест
4 - синее болото
5 - зеленый крест
6 - ...
Можно поставить так, но лучше сместить на 1, что было:
-1 - свободно.
0 - красный крест
1 - красное болото
2 - ...
В таком случае принадлежность клетки к игроку вычислить легко как S div 2 (а лучше S shr 1), состояние - как S mod 2 (или S and 1), а -1 - свободно (где S - состояние). Для состояния клетки достаточно 1 байта, поэтому делаем двумерный массив байтов.
На каждом ходу проверям возможность хода:
- Клетка - не болото;
- Рядом с выбранной клеткой должна быть хотя бы одна своего цвета;
- Если эта клетка - болото, то любым алгоритмом наподобие закраски ищем крест нужного цвета в округе (для маленького поля можно даже не париться и сделать рекурсией).
Ну и переходы состояния довольно простые:
- из пустой только в крестик (т.е. S:=N*2, где N - номер игрока);
- из крестика только в болото (т.е. S:=N*2+1).
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 12.04.2012 в 18:38.
Ответить с цитированием
  #10  
Старый 12.04.2012, 18:36
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Вот я тут набросал за пару часов, правда конец игры не определяется и графика лажовая

ЗЫЖ Delphi XE
Вложения
Тип файла: 7z Viruses game.7z (84.0 Кбайт, 9 просмотров)
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #11  
Старый 12.04.2012, 18:49
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а не логичней ли определять победителя по количеству клеток с вирусом и болотом, а не кто последний ходил?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #12  
Старый 12.04.2012, 19:29
Ingeneer2012 Ingeneer2012 вне форума
Прохожий
 
Регистрация: 11.04.2012
Сообщения: 6
Репутация: 10
По умолчанию

Спасибо Bargest и Aristarh Dark за помощь. Попробую разобраться что к чему. Все дело в том, что я пытался реализовать программу основываясь на своих очень средних знаниях.
Пытался сделать так:
1. Создаю массив БитБаттонов 10х10 (обычные батоны не подходят, ибо не меняется цвет надписей)
2. Создаю зависимости для каждой клетки посредством алгоритма (я там по координатам расчитывал), записиваю их все в файл текстовый.
3. Создал алгоритм расчета возможного хода, варианты всех возможных ходов тоже записал в текстовый файл.
А потом начались приколы в виде торможения программы, когда занятых клеток больше чем 6-7. Это из-за того, что программа по новой после каждого хода просчитывает данные и переписывает их в файл. Тут я протупил или с алгоритмом, или в самом листинге напортачил. Я знаю, что все это можно как-то сделать с выделением памяти и т.д., но делал, как умел. Хотелось сразу сделать как более универсальной, но не хватило умения.
Ответить с цитированием
  #13  
Старый 12.04.2012, 21:48
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Я тоже зделал что-то. Такое приблизительно? Делал "на быструю руку", возможны недочеты.

Последний раз редактировалось YVitaliy, 19.04.2012 в 00:35.
Ответить с цитированием
  #14  
Старый 12.04.2012, 22:05
Kingcss Kingcss вне форума
Начинающий
 
Регистрация: 20.12.2010
Адрес: Иваново
Сообщения: 100
Версия Delphi: Delphi 7
Репутация: 519
По умолчанию

Понравилась идея YVitaliy показывать куда можно ходить, а идея такой игрушки похоже заняла многих, вот моя реализация на WinApi, Потратил часа 2-3 наверно. Плюсы: Реализован на WinApi и имеет размер 20 кб, реализовано практически все в том числе и победы.
Минусы: код не оптимизирован, ужасная функция определение победы(просто устал жутко, голову ломать не хотелось) и нету реализации подключенного неподключенного болота, у меня все одно)

П.С может замутить конкурс на лучшую реализацию такой игры
Вложения
Тип файла: zip viruses.zip (21.8 Кбайт, 12 просмотров)
Ответить с цитированием
  #15  
Старый 12.04.2012, 22:16
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Я тогда вииграю, 100% Да!!! У меня тоже нет VCL компонентов кстати (кроме главной формы)!!! З.Ы А там что, по три хода должно быть у каждого игрока за раз? Значит, нужно доделать...

Последний раз редактировалось YVitaliy, 12.04.2012 в 22:19.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:15.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter