gameset's People
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
написать библиотеку для интерактора
test
сделать эскиз страницы создания игры
Сделать карту пользователя
Создать класс Compiler
Я как разработчик хочу иметь класс Compiler, способный скомпилировать код на C++, используя инвокер, и вернуть результат компиляции:
Методы:
compile(path) - принимает путь к файлу и компилирует его в инвокере. Возвращает объект класса CompilationReport.
Пока просто пустой конструктор, но рассчитывать на возможность передачи опций компилятора в будущем
Инициализировать и настроить проект (БД, фреймворк)
Я как разработчик хочу иметь настроенный проект на фреймворке с PostgreSQL для работы всего
Создать view /games/new
Я как автор игры хочу иметь страничку с формой для создания новой игры. Необходимы поля с названием игры (name), путем к файлу интерактора (interactor) и файлу тупого решения (dumb_sol). Файлы должны сохраняться в одной общей папке. После отправки формы файлы должны скомпилироваться вызовом метода compile(path)
у класса Compiler, если всё удачно - файлы сохраняются в папке, создаётся инстанс класса Game и сохраняется в базе данных, происходит редирект на view /games. При возникновении ошибки при компиляции файлов пользователь остаётся в view /games/new и видит текст ошибки.
compiler
Написать страницу "Компиляция и запуск чужих решений" на wiki
Создать UML-диаграмму работы инвокера
8. Создать класс Match runner
Я, как разработчик, хочу чтобы Match runner запускал решения и сравнивал их между собой.
Конструктору передаются:
- interactor - путь к скомпилированному интерактору
- solutions - массив объектов Solution
- matchCompletedObserver - объект, который ожидает результат матча
Методы:
run() - запускает матч
5. создать model Solution
Я, как разработчик gameset, хочу иметь модель для решения пользователя c полем id
(глобальный ID среди всех решений), gameID
(ID игры) и методом getPath()
, который возвращает путь до файла, который формируется с использованием id
Причесать wiki
договориться о сервере
OS: Linux (Debian)
ROM: 40 GB
RAM: 8 GB
14. Написать документ с форматом интерактора
Я, как разработчик игры, хочу иметь документ, описывающий формат интерактора
Написать концепцию
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.