Форум Игромании

Форум Игромании (http://forum.igromania.ru/index.php)
-   Архив (Общеигровые вопросы) (http://forum.igromania.ru/forumdisplay.php?f=173)
-   -   Проекты форумчан (Архив) (http://forum.igromania.ru/showthread.php?t=136178)

the_E.N.D. 05.12.2007 19:46

Игра "Реши задачку"
 
"Это нечто вроде интеллектуальной игры."
([CCCP] Monster)

Суть игры сводится к тому, что задается задачка (по програмированию естественно).
Тот кто ее решает (желательно с комментариями), имеет право загадать следующую, и так по цепочке.

P.S. Еще можно вести статистику. Кто сколько решил задач. У кого задачи самые интересные, а у кого самые сложные. Потом лучших как-нибудь награждать.
P.P.S. Конечно же, задающий должен знать решение своей задачи

the_E.N.D. 05.12.2007 19:47

Задача (решал на Pascal)
 
Известно, что A и B - термы. Так же известно, что (T1+T2) - терм, если Т1 и Т2 - термы (сумма обязательно двух терм и в круглых скобках).
С клавиатуры вводится строка. Определить является ли введенная строка термом.

Например:
(А+В) - терм;
((А+В)+А) - терм;
(А+В+В) - не терм.

pokibor 05.12.2007 21:16

Элементарщина. Решать можно уймой способов, но в данном случае разумен однопроходный вариант со стеком. Сделал, ясное дело, на C++. Сейчас пойду думать свою задачу. :)
Язык C++, компилятор MS VC++ 2005
Код:

//Элементарно, Ватсон! Даже не нужно грамматик никаких :)
//Решается банальным стеком. Правила:
//После '(' должен идти терм и '+'
//A и B - термы
//После '+' должен идти терм и ')'
//')' закрывает открытый '(' терм

#include <stack>
#include <stdio.h>
using namespace std;

int main() {
        char c = ' ';//введёный символ
        stack<char> s;//Стек на символах. '(' - терм открыт; 'A' - есть первый терм при сложении, '+' - есть сложение, 'B' - есть второй терм при сложении;
        s.push('(');//Пихаем открытую скобочку в начало стека
        while ((c != '\t') && ((c = getc(stdin)) != '\n')) {
                switch (c) {
                        case '(':
                                if ((s.top() == 'A')||(s.top() == 'B')) {
                                        c = '\t';//Скобочка идёт после терма
                                } else {
                                        s.push('(');
                                }
                                break;
                        case 'A': case 'B':
                                if ((s.top() == 'A')||(s.top() == 'B')) {
                                        c = '\t';//Терм идёт после терма
                                } else {
                                        //Ставим соответствующее состояние
                                        if (s.top() == '(') s.top() = 'A';
                                        else s.top() = 'B';
                                }
                                break;
                        case '+':
                                if (s.top() != 'A') {
                                        c = '\t';//'+' идёт не после первого терма
                                } else {
                                        //Ставим соответствующее состояние
                                        s.top() = '+';
                                }
                                break;
                        case ')':
                                if (s.top() != 'B') {
                                        c = '\t';//закрытие идёт не после второго терма
                                } else {
                                        s.pop();//убираем этот терм и ставим соотв. состояние
                                        if (s.empty()) c = '\t';
                                        else if (s.top() == '(') s.top() = 'A';
                                        else if (s.top() == '+') s.top() = 'B';
                                        else c = '\t';//Предосторожность :)
                                }
                                break;
                        default:
                                c = '\t';
                                break;
                }
                if (s.empty()) c = '\t';
        }
        //В стеке должен остаться всего один член и быть термом
        if ((s.size() != 1)||((s.top() != 'A')&&(s.top() != 'B'))) c = '\t';

        if (c == '\n') printf("\ntrue!"); else printf("\nfalse!");
        return 0;
}

Временная ссылка на скомпиленый файл на webfile'е: http://webfile.ru/1628264
Правда, не могу ручаться, что для запуска не потребуется редистрибутивы C++.

pokibor 05.12.2007 22:14

Что ж, задачку для разминки выбрал. Надеюсь, все знаю игру в 15 (пятнашки). Если кто не знает - см. здесь.
Возьмём для сокращения времени расчётов вариант игры в 8 (т.е. поля 3x3 ячейки). Пользователь вводит начальную комбинацию как последовательность трёх рядов по три числа в каждом, где 0 обозначает пустую ячейку. Пример ввода:

3 8 2
4 1 5
0 7 6

Задача компьютера - вывести наименьшее число передвижений , приводящее к одному из двух конечных вариантов положения костяшек, т.е.

1 2 3
4 5 6
7 8 0

либо

1 2 3
4 5 6
8 7 0

Поехали.

P.S. Подозреваю, что на этом тема заглохнет...
P.P.S. Сейчас прикинул - простейшая схема жрёт память с жуткой скоростью. Потому допускаю просто набросок кода с рассчётом на то, что память неограниченна. Хотя улучшений алгоритма можно придумать уйму.

-DS- 06.12.2007 19:15

Space Master 1989
 
Вот наша игра, как пример игры на GM (правда ТАКОЙ пример не отображает широких возможностей Game Maker'а)

Название: Space Master 1989
Жанр: Скроллинг Шутер

Разработчик: DeltaShadow
Релиз: 2007

Размер: 5.44мб

Ссылка для скачивания: http://deltashadow.com/gs/games/spac...ter%201989.rar
Страница игры:
http://deltashadow.com/gs/games/spac...aster_1989.htm

Скрины:
http://deltashadow.com/gs/games/spac...89/screen3.png

QE-рейтинг игры: http://deltashadow.com/gs/games/spac.../qe_rating.png
подробнее о QE

свои комментарии пишите в данной теме.

pokibor 06.12.2007 19:21

Опять Game Maker? Смешно. Извините.
Я признаю только игры, сделаные на серьёзных движках и языках программирования.

-DS- 06.12.2007 19:23

это просто и игра соотвествующая по сложности написания...
мы работаем над 3d-движком.

Feanor62rus 06.12.2007 19:58

Цитата:

Сообщение от -DS- (Сообщение 2823944)
QE-рейтинг игры:

Это чО такое?

ORTODOX 06.12.2007 19:58

-DS-
Сколько игра весит? Много? Сколько уровней?

-DS- 06.12.2007 20:28

Цитата:

Сообщение от Feanor62rus (Сообщение 2824459)
Это чО такое?

ответил в первом посте
Цитата:

Сколько игра весит?
ответил в первом посте

Цитата:

Сколько уровней?
25 уровней

3 уникальных саундтрека, полный набор собственных звуков, разрешение экрана 320х240 (для максимального погружения)

ORTODOX 06.12.2007 20:33

-DS-
В геим маркете можно создавать шутеры?

AXEL SONIC 06.12.2007 20:53

-DS-
Ну мое мнение ты уже знаешь)

Feanor62rus 06.12.2007 20:54

-DS-, тоесть, как я понял, разработчиком игры является DeltaShadow, и оценку QE проводит тоже DeltaShadow. О какой обьективности оценки может идти речь?

ORTODOX 06.12.2007 20:57

-DS-
А что все по англииски? Такое чувство ,что не ты ее делал :))

-DS- 06.12.2007 21:05

ORTODOX
на GM можно создать что угодно, я даже растровый редактор делал.

Feanor62rus
именно, что оценщик - не щадит нас, QE как бы немного отдалено от других структур... рейтинг 7.7 - более менее щедрый, т.к. проводилась оценка по QE 1.0, щас уже действует QE 1.1 с более жесткими правилами . Если у вас есть игра, присылайте на qe@deltashadow.com

PavelZ 08.12.2007 13:11

Universe: extend frontier.
 
Пишу концепцию новой игры. Параллельно пишу некоторые элементы программной реализации игры, базу данных объектов "игровой вселенной", алгоритмы взаимодействия объектов. Возможно в ближайшем времени попробую запустить сервер с текстовыми консолями для тестирования возможностей проекта. Понятно, что сделать качественную графику и звук без чужой помощи не смогу, но этот момент пока не наступил. Но я нуждаюсь в конструктивной критике, это будет меня подстёгивать в поиске новых решений.
Вселенная: расширяя пределы.

Неограниченный пространством и единым сюжетом on-line игровой научно-фантастический мир, основой которого является взаимодействие компьютерных персонажей, имеющих сложную многоуровневую модель поведения, с живой и неживой природой. Персонажи игроков, вливаясь в мир участвуют в его развитии в одиночку или объединяясь между собой и персонажами, управляемыми искусственным интеллектом, борясь с капризами природы, соперничающими индивидами и объединениями.

Игра в стиле RPG/Action (ролевая приключенческая игра активного действия) с элементами симулятора космического и наземного транспорта, экономической и военной стратегии. Участники игры имеют возможность вести собственные научные исследования, конструировать уникальные транспортные средства, строить комплексы наземных зданий и стационарных космических объектов.

Тысячи звёздных скоплений, от нескольких звёзд, до нескольких десятков. Очень важно что, путешествуя постоянно, есть возможность попасть в звёздную систему ещё не открытую другими участниками игрового процесса. Десятки уникальных рас имеющих отличия не только во внешности, но и в поведении, и специфических для каждой расы технике и зданиях. В процессе развития игрового мира, участники обязательно встретят новые расы, и те будут вовлекаться в игровой процесс, при чём эти расы будут иметь разнообразное общественное устройство и разный уровень развития технологий.

http://zp3.biz/universe-extend-frontier

SОNIC 11.12.2007 13:44

PavelZ
На чём пишешь?

PavelZ 11.12.2007 14:24

В своей работе буду использовать такую связку Visual Studio 2008, СУБД, скрипты Питон (IronPython), графика VRML/X3D. Пока основная работа в СУБД . За месяц много не сделаешь при таких наполеоновских планах, тем более один.

SОNIC 11.12.2007 14:28

PavelZ
А БД ты как используешь?

PavelZ 11.12.2007 15:32

Все объекты будут храниться в базе. Обработчики событий будут извлекать свойства модифицировать и обратно в базу. Разве только для особо динамичных событий будет создаваться арена, которая в принципе будет только кэшировать данные, как это сделать технически представляю пока смутно. Соответственно консоли будут обращаться либо непосредственно к базе либо к аренам. Возможно изобретаю велосипед, но как вижу многопользовательские игры дело молодое и каких-то проверенных решений на всеобщее обсуждение мало кто выносит.


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

Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.