Практическая работа №1
ПО «МДК»
на тему «Online-компиляторы и игры»
ВЫПОЛНИЛ:
Студент группы ИСП-О-19
Жохов А.С.
ПРОВЕРИЛ:
Семенов.Д.В
Оценка:___________________
п. Электроизолятор
2020 г
Online-компиляторы
Цель данной работы познакомиться с онлайн-компиляторами и научиться с ними работать.
Задание 1
1. Koding.com — не является онлайн-компилятором в привычном смысле. Каждый пользователь сервиса может создать в облаке несколько полноценных виртуальных машин под управлением Ubuntu 14.04, на которых может сделать всё, что пожелает, в том числе — скомпилировать код.
2. IdeOne — это онлайн компилятор, а также инструмент отладки, который позволяет прямо в браузере выполнять код на более чем 60 языках программирования и их конкретных версиях.
3. JDoodle — есть возможность совместной работы — просто требется отправить ссылку на вашу текущую сессию
4. CodePad — минималистичный сервис, в котором можно хранить код, делиться им и запускать с последующим выводом результатов его выполнения. На выбор предоставляется несколько наиболее распространённых языков, но, к сожалению, без выбора конкретных версий интерпретаторов или компиляторов.
5. GCC GodBolt — интерактивный компилятор языка С++. Имеет простой интерфейс, а также большое количество настроек
6-7 SandBox, и PHPFiddle позволяют в один клик запустить PHP код и следом получить его вывод. PHPFiddle имеет более удобный и современный дизайн, на нём установлена актуальная версия PHP.SandBox же, кроме использования самой последней версии языка, даёт пользователю возможность выбрать версию самостоятельно.
8. jsFiddle создан не только для JavaScript. Этот онлайн-редактор для фронтенда позволяет проверить любое сочетание JavaScript, HTML и CSS.
9. Python Fiddle
Онлайн-среда для проектирования на Python. Поддерживает внешние Python-библиотеки. Есть стандартная подсветка кода и возможность импорта по url c внешних ресурсов.
10. SQL Fiddle
Инструмент для онлайн-тестирования и совместного использования баз данных. Возможно использование различных версий MySql, SQLite, PostgreSQL, Oracle и MS SQL Server 2008 и 2014.
Вывод: Я нашел код для игр Змейка и Крестики нолики, научился пользоваться онлайн-компиляторами узнал какие они бывают, так же делаю для себя вывод что хочу сам написать код для игры
Крестики нолики
#include <stdio.h>
#include <conio.h>
int a[3][3];// объявляем текущее поле 3 строки и 3 столбца. если нет ничего то поле 0, если нолик, то 1, если крестик то 2
// обнуление поля
void nul()
{ int i,j;
// пробегаем по всем строкам
for(i=1; i<=3; i++)
{
// пробегаем по всем столбцам
for (j=1;j<=3;j++)
{
a[i][j]=0;
}
}
}
// вывод поля на экран
void visual()
{
int i,j;
printf (" 1 2 3\n");
// пробегаем по всем строкам
for(i=1; i<=3; i++)
{
printf ("%d", i);
// пробегаем по всем столбцам
for (j=1;j<=3;j++)
{
if (a[i][j]==0){printf("| ");};
if (a[i][j]==1){printf("|O");};
if (a[i][j]==2){printf("|X");};
}
// переходим на следующую строку
printf ("|\n");
printf ("________\n");
}
}
// Ход игрока n - номер игрока На выходе: 0 -
void hod (int n)
{
int hi;// ход игрока
int sto; // номер столбца в ходе
int str; // номер строки в ходе
int ver=0; // проверка на корректность хода, если нельзя сделать такой ход то 0, если можно то 1
// запрашиваем ход, пока не будет введен корректный ход
while (ver==0)
{
// ввод хода
printf ("Ваш ход. Введите номер строки и столбца. \n");
scanf("%d", &hi);
// определяем номер столбца - это последняя цифра в ходе
sto=hi%10;
// определяем номер строки хода - это первая цифра
str=(hi-sto)/10;
// проверка корректности хода, клетка должна быть пуста и номер должен быть один из номеров таблицы 3 на 3
if (a[str][sto]==0 && (hi==11 || hi==12 || hi==13 || hi==21 || hi==22 || hi==23 || hi==31 || hi==32 || hi==33)) (ver=1);
}
// если ходил игрок 1 то поле хода 1
if (n==1) {a[str][sto]=1;}
// если ходил игрок 2 то поле хода 2
if (n==2) {a[str][sto]=2;}
}
// Проверка Если ни один игрок не выиграл то 0, если выиграл нолик то 1 если выиграл крестик то 2
int proverka()
{ int i;
int res; // значение функции. Если ни один игрок не выиграл то 0, если выиграл нолик то 1 если выиграл крестик то 2
res=0;
// проверяем выигрыш первого игрока
// пробегаем по всем строкам
for (i=1; i<=3; i++)
{
// проверка все ли в строке нолики
if (a[i][1]==1 && a[i][2]==1 && a[i][3]==1) {res=1;}
}
// пробегаем по всем столбцам
for (i=1; i<=3; i++)
{
// проверка все ли в столбце нолики
if (a[1][i]==1 && a[2][i]==1 && a[3][i]==1) {res=1;}
}
// проверка диагоналей
if (a[1][1]==1 && a[2][2]==1 && a[3][3]==1) {res=1;}
if (a[1][3]==1 && a[2][2]==1 && a[3][1]==1) {res=1;}
// проверяем выигрыш второго игрока
// пробегаем по всем строкам
for (i=1; i<=3; i++)
{
// проверка все ли в строке крестики
if (a[i][1]==2 && a[i][2]==2 && a[i][3]==2) {res=2;}
}
// пробегаем по всем столбцам
for (i=1; i<=3; i++)
{
// проверка все ли в столбце крестики
if (a[1][i]==2 && a[2][i]==2 && a[3][i]==2) {res=2;}
}
// проверка диагоналей
if (a[1][1]==2 && a[2][2]==2 && a[3][3]==2) {res=2;}
if (a[1][3]==2 && a[2][2]==2 && a[3][1]==2) {res=2;}
return res;
}
main()
{
int igra;// состояние игры если победил нолик то 1, если победил крестик то 2 если никто пока не победил то 0
// обнуляем очищаем поле
nul();
// отображаем игровое поле
visual();
igra=0;
// пока никто не победил продолжается игра
while (igra==0)
{
// ход 1 го игрока нолика
hod(1);
// отображаем игровое поле
visual();
// проверка на победу первого игрока
igra=proverka();
// если первый игрок не победил, то ходит второй игрок
if (igra==0)
{
// ход второго игрока
hod(2);
// отображаем игровое поле
visual();
// проверка на победу второго игрока
igra=proverka();}
}
// отображение результатов игры
if (igra==1){printf ("Победил нолик\n");};
if (igra==2){printf ("Победил крестик\n");};
getch();
}
Змейка #include <time.h>
#include <string.h>
#include <stdlib.h>
#include <curses.h>
#define putxy(c, x, y) do { move(y, x); addch(c); } while (0);
#define CPS CLOCKS_PER_SEC
int main() {
struct { int x; int y; } sc[2001];
int l = 5, dx = 1, dy = 0, bx = -1, by = -1, b = 1, score = 0, c, run = 1, g = 0;
clock_t mt, bt;
initscr(); noecho(); curs_set(0); keypad(stdscr, 1); nodelay(stdscr, 1);
for (c = 0; c < l; ++c) {
putxy('#', c, 0);
sc[l - c - 1].x = c; sc[l - c - 1].y = 0;
}
mt = bt = clock();
while (run) {
switch (getch()) {
case KEY_UP: dx = 0; dy = -1; break;
case KEY_DOWN: dx = 0; dy = 1; break;
case KEY_LEFT: dx = -1; dy = 0; break;
case KEY_RIGHT: dx = 1; dy = 0; break;
case 27: run = 0; break;
}
if (clock() - mt >= CPS * 0.1) { // пришло время передвижения
int x = sc[0].x + dx, y = sc[0].y + dy;
if (x == bx && y == by) {
score += b * 10;
bx = -1; by = -1;
g = 10;
}
putxy('#', x, y);
putxy(' ', sc[l - 1].x, sc[l - 1].y);
memmove(sc + 1, sc, l * sizeof(sc[0]));
sc[0].x = x; sc[0].y = y;
if (g) --g, ++l;
if (x > 79 || x < 0 || y > 24 || y < 0) run = 0;
for (c = 1; c < l; ++c) if (x == sc[c].x && y == sc[c].y) run = 0;
mt += CPS * 0.1;
}
if (clock() - bt >= CPS) { // пришло время глянуть, шо там с бонусом
if (!(--b)) {
int cf = 1;
putxy(' ', bx, by);
while (cf) {
bx = rand() % 80; by = rand() % 25;
cf = 0;
for (c = 0; c < l; ++c) if (bx == sc[c].x && by == sc[c].y) cf = 1;
}
putxy('*', bx, by);
b = 10;
}
bt += CPS;
}
// сюда можно вставить sleep
}
clear(); nodelay(stdscr, 0);
printw("game over!\nyou score: %d\npress any key...", score);
getch(); endwin();
}