Git Product home page Git Product logo

gameset's People

Watchers

 avatar  avatar  avatar

gameset's Issues

создать класс game

класс game это стркутура для того чтобы содержать в себе информацию об одной игре(игра тут подразумевается как совокупность каких то правил)

создать игру "пять в ряд" и сделать так чтобы можно было проводить тесты с ее помощью

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

Создать template view/games/id/solutions/id

Я, как пользователь сайта, хочу видеть свои решения на странице view/games/id/solutions/id. На странице должны быть результаты раундов с другими программами в виде таблицы, язык, на котором написана программа, сколько баллов она набрала и само решение в виде кода и кнопка возвращения на страницу загрузки нового решения. В контроллере должен быть метод получающий решение игрока и результаты работы из дб. Также должен быть метод, который запускает страницу.

GET /games/id:int/solutions/new

я как пользователь хочу после нажатия на игру перейти на страницу с отправкой решения (стратегии) [newSolution метод]. Там должна быть возможность прикрепить и/или drag-and-drop файла кода с решением (стратегией). Сразу после успешной отправки на метод uploadSolution происходит редирект на страницу с id этого решения (стратегии) [вызывается метод viewSolution]. uploadSolution вызывает функцию createSolution, которая возвращает ID нового решения, сохранив его в базе данных

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

Отправка решения (стратегии) считается неуспешной, если во время передачи файла на сервер произошла ошибка, то есть файл с решением (стратегией) не достиг сервера. Примером такой ошибки может быть потеря соединения с Интернетом.

Создать view/games

Я, как пользователь, хочу иметь возможность видеть список игр, кнопку play и кнопку new на страничке view/games
При нажатии на кнопку new мы переходим на страницу view/games/new
При нажатии на кнопку play мы переходим на страницу view /games/id:int/solutions/new

Название контроллера страницы: GamesController

Создать формат solution

Создать формат solution, чтобы пользователь мог отправлять решение и оно корректно компилировалось.
Формат должен включать в себе требования к времени работы программы и затратам памяти. Также должны быть регламентированы методы ввода и вывода информации.

9. Сделать класс Invoker

Задача: дописать инвокер

Он должен:

  • Безопасно компилировать решение в изолированной среде

  • Запускать решение в изолированной файловой среде с time limit и memory limit

  • В случае ошибки возвращать логи

Ему нужен:

  • Файл с кодом решения

  • ID ЯП решения

Подробнее здесь

Я, как разработчик, хочу иметь класс Invoker, у которого есть строковые поля executable (путь к исполняемому файлу), redirect_stdin и redirect_stdout (названия процессов, откуда и куда перенаправлять stdin/stdout соответственно) и поле argv (параметры командной строки файла, список строк)

Также у Invoker есть метод run(wait: Boolean), возвращающий Int, который запускает процесс, и если wait истинно, то возвращает код завершения процесса при его завершении, иначе процесс запускается в фоне и возвращается 0.

Добавить модель MatchReport

Я как разработчик хочу собирать и хранить различные данные, полученные в результате матча. Для этого надо создать модель MatchReport, которая будет описывать репрезентацию сохранённых данных в коде и БД.

Эта модель должна содержать следующие данные:

  • продолжительность матча - matchDuration
  • таймпстамп начала матча - matchStartTime
  • лог интерактора - interactorLog
  • участвующие решения - participatingSolutions
  • победитель - winner

Создать класс Compiler

Я как разработчик хочу иметь класс Compiler, способный скомпилировать код на C++, используя инвокер, и вернуть результат компиляции:

Методы:
compile(path) - принимает путь к файлу и компилирует его в инвокере. Возвращает объект класса CompilationReport.

Пока просто пустой конструктор, но рассчитывать на возможность передачи опций компилятора в будущем

Создать view /games/new

Я как автор игры хочу иметь страничку с формой для создания новой игры. Необходимы поля с названием игры (name), путем к файлу интерактора (interactor) и файлу тупого решения (dumb_sol). Файлы должны сохраняться в одной общей папке. После отправки формы файлы должны скомпилироваться вызовом метода compile(path) у класса Compiler, если всё удачно - файлы сохраняются в папке, создаётся инстанс класса Game и сохраняется в базе данных, происходит редирект на view /games. При возникновении ошибки при компиляции файлов пользователь остаётся в view /games/new и видит текст ошибки.

8. Создать класс Match runner

Я, как разработчик, хочу чтобы Match runner запускал решения и сравнивал их между собой.

Конструктору передаются:

  • interactor - путь к скомпилированному интерактору
  • solutions - массив объектов Solution
  • matchCompletedObserver - объект, который ожидает результат матча

Методы:
run() - запускает матч

5. создать model Solution

Я, как разработчик gameset, хочу иметь модель для решения пользователя c полем id (глобальный ID среди всех решений), gameID (ID игры) и методом getPath(), который возвращает путь до файла, который формируется с использованием id

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.