Главная страница

Отчёт по практике ОС и праграмирование. Отчёт по практике. Отчёт по практике Программирование и ос


Скачать 0.61 Mb.
НазваниеОтчёт по практике Программирование и ос
АнкорОтчёт по практике ОС и праграмирование
Дата23.05.2022
Размер0.61 Mb.
Формат файлаdocx
Имя файлаОтчёт по практике.docx
ТипОтчет по практике
#545310

Отчёт по практике

Программирование и ОС

Подведение итогов

Выполнили

Александр Попов _____

Добжанский Никита _____

Руководитель

Вахит-хан Р. ____




    1. клавиатуры 4х4 с драйверами через Ардуино Уно. 3 стр.

    2. Схема подключения клавиатуры к ардуино 4 стр.

    3. Код 5 стр.

2. Работа в Visual studio.

2.1 Кнопка Hello world, 8 стр.

2.2 «крестики нолики» 8 стр.

2.3 код «крестики нолики» 9 стр.

2.4 калькулятор. 15 стр.

3.1 теория игр, 16 стр.

3.2 калькулятор на Ардуино, 17 стр.

3.2 схема 18 стр.

3.2 код 19 стр.

3.3 работа со схемами в сплан 28 cтр.

3.3 пример работы в Splan 29 стр.

4. Послесловие 30 стр.









Клавиатура 4х4

Сегодня мы изучили клавиатуры 4х4 и драйверов через Ардуино Уно. Была поставлена задача обеспечить работоспособность клавиатуры при нажатии более чем 3 клавиш. Изначально задача была решена при помощи считывания нажатия каждой клавиши но считывалось максимум 2-е клавиши после чего пришли к другому варианту решения поставленной задачи. При помощи постоянной и поочередной проверки строк на наличие сигнала.
















const byte stroka1 = 4; //вход ардуино считывание 1 строки

const byte stroka2 = 5; //вход ардуино считывание 2 строки

const byte stroka3 = 6; //вход ардуино считывание 3 строки

const byte stroka4 = 7; //вход ардуино считывание 4 строки

const byte stolbec1 = 8; //выход ардуино опрос 1 столбца

const byte stolbec2 = 9; //выход ардуино опрос 2 столбца

const byte stolbec3 = 10; //выход ардуино опрос 3 столбца

const byte stolbec4 = 11; //выход ардуино опрос 4 столбца

const byte led1 = 12; //сигнал жёлтый, желтый мигающий-желтый верхний

const byte led2 = A0; //сигнал красный

const byte led3 = 2; //сигнал зелёный

const byte led4 = 3; //сигнал жёлтый-желтый нижний

const byte led5 = A1; //сигнал луннобелый мигающий - пригласительный

//variables that will change

byte strokaState1 = 30; //входная переменная столбец 1

byte strokaState2 = 31; //входная переменная столбец 2

byte strokaState3 = 32; //входная переменная столбец 3

byte strokaState4 = 33; //входная переменная столбец 4

byte myPins[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; //создание массива из 16 ячеек

void setup() {

Serial.begin(9600);

pinMode(stroka1, INPUT); //вход считывание 1 строки

pinMode(stroka2, INPUT); //вход считывание 2 строки

pinMode(stroka3, INPUT); //вход считывание 3 строки

pinMode(stroka4, INPUT); //вход считывание 3 строки

pinMode(stolbec1, OUTPUT); //выход опрос 1 столбца

pinMode(stolbec2, OUTPUT); //выход опрос 2 столбца

pinMode(stolbec3, OUTPUT); //выход опрос 3 столбца

pinMode(stolbec4, OUTPUT); //выход опрос 4 столбца

pinMode(led1, OUTPUT); //выход сигнал жёлтый, желтый мигающий

pinMode(led2, OUTPUT); //выход сигнал красный

pinMode(led3, OUTPUT); //выход сигнал зелёный

pinMode(led4, OUTPUT); //выход сигнал жёлтый

pinMode(led5, OUTPUT); //выход сигнал луннобелый мигающий - пригласительный

digitalWrite(stroka1, HIGH); //вход строка 1 в лог."1"

digitalWrite(stroka2, HIGH); //вход строка 2 в лог."1"

digitalWrite(stroka3, HIGH); //вход строка 3 в лог."1"

digitalWrite(stroka4, HIGH); //вход строка 4 в лог."1"

digitalWrite(stolbec1, HIGH); //выход столбец 1 в лог."1"

digitalWrite(stolbec2, HIGH); //выход столбец 2 в лог."1"

digitalWrite(stolbec3, HIGH); //выход столбец 3 в лог."1"

digitalWrite(stolbec4, HIGH); //выход столбец 4 в лог."1"
//digitalWrite(led1, LOW); //начальное выключение сигнал жёлтый, желтый мигающий, включение при HIGH

//digitalWrite(led2, LOW); //начальное выключение сигнал красный, включение при HIGH

//digitalWrite(led3, LOW); //начальное выключение сигнал зелёный, включение при HIGH

//digitalWrite(led4, LOW); //начальное выключение сигнал жёлтый, включение при HIGH

//digitalWrite(led5, LOW); //начальное выключение сигнал луннобелый мигающий - пригласительный, включение при HIGH

}

void loop()

{

//опрос матрицы оптопар

//первый цикл опроса

strokaState1 = digitalRead(stroka1);//чиать 0 со строки 1

strokaState2 = digitalRead(stroka2);//чиать 0 со строки 2

strokaState3 = digitalRead(stroka3);//чиать 0 со строки 3

strokaState4 = digitalRead(stroka4);//чиать 0 со строки 4

digitalWrite(stolbec1, LOW);//писать 0 в столбец 1

digitalWrite(stolbec2, HIGH);//писать 1 в столбец 2

digitalWrite(stolbec3, HIGH);//писать 1 в столбец 3

digitalWrite(stolbec4, HIGH);//писать 1 в столбец 4

if(stolbec1 == LOW);//если столбец 1 в 0,

Serial.print ("A");//вывести в сериал порт значение столбец 1

if(strokaState1 == LOW);//если строка 1 в 0,

myPins[0] = strokaState1;//то присвоить ячейке 0 значение 0

Serial.print (myPins[0]);//вывести в сериал порт значение ячейки 0

if(strokaState2 == LOW);//если строка 2 в 0,

myPins[1] = strokaState2;//то присвоить ячейке 1 значение 0

Serial.print (myPins[1]);//вывести в сериал порт значение ячейки 1

if(strokaState3 == LOW);//если строка 3 в 0,

myPins[2] = strokaState3;//то присвоить ячейке 2 значение 0

Serial.print (myPins[2]);//вывести в сериал порт значение ячейки 2

if(strokaState4 == LOW);//если строка 4 в 0,

myPins[3] = strokaState4;//то присвоить ячейке 3 значение 0

Serial.print (myPins[3]);//вывести в сериал порт значение ячейки 3

//второй цикл опроса

strokaState1 = digitalRead(stroka1);//чиать 0 со строки 1

strokaState2 = digitalRead(stroka2);//чиать 0 со строки 2

strokaState3 = digitalRead(stroka3);//чиать 0 со строки 3

strokaState4 = digitalRead(stroka4);//чиать 0 со строки 4

digitalWrite(stolbec1, HIGH);//писать 1 в столбец 1

digitalWrite(stolbec2, LOW);//писать 0 в столбец 2

digitalWrite(stolbec3, HIGH);//писать 1 в столбец 3






digitalWrite(stolbec4, HIGH);//писать 1 в столбец 4

if(stolbec2 == LOW);//если столбец 2 в 0,

Serial.print ("B");//вывести в сериал порт значение столбец 2

if(strokaState1 == LOW);//если строка 1 в 0,

myPins[4] = strokaState1;//то присвоить ячейке 4 значение 0

Serial.print (myPins[4]);//вывести в сериал порт значение ячейки 4

if(strokaState2 == LOW);//если строка 2 в 0,

myPins[5] = strokaState2;//то присвоить ячейке 5 значение 0

Serial.print (myPins[5]);//вывести в сериал порт значение ячейки 5

if(strokaState3 == LOW);//если строка 3 в 0,

myPins[6] = strokaState3;//то присвоить ячейке 2 значение 0

Serial.print (myPins[6]);//вывести в сериал порт значение ячейки 6

if(strokaState4 == LOW);//если строка 4 в 0,

myPins[7] = strokaState4;//то присвоить ячейке 3 значение 0

Serial.print (myPins[7]);//вывести в сериал порт значение ячейки 7

//третий цикл опроса

strokaState1 = digitalRead(stroka1);//чиать 0 со строки 1

strokaState2 = digitalRead(stroka2);//чиать 0 со строки 2

strokaState3 = digitalRead(stroka3);//чиать 0 со строки 3

strokaState4 = digitalRead(stroka4);//чиать 0 со строки 4

digitalWrite(stolbec1, HIGH);//писать 1 в столбец 1

digitalWrite(stolbec2, HIGH);//писать 1 в столбец 2

digitalWrite(stolbec3, LOW);//писать 0 в столбец 3

digitalWrite(stolbec4, HIGH);//писать 1 в столбец 4

if(stolbec3 == LOW);//если столбец 3 в 0,

Serial.print ("C");//вывести в сериал порт значение столбец 3

if(strokaState1 == LOW);//если строка 1 в 0,

myPins[8] = strokaState1;//то присвоить ячейке 8 значение 0

Serial.print (myPins[8]);//вывести в сериал порт значение ячейки 8

if(strokaState2 == LOW);//если строка 2 в 0,

myPins[9] = strokaState2;//то присвоить ячейке 9 значение 0

Serial.print (myPins[9]);//вывести в сериал порт значение ячейки 9

if(strokaState3 == LOW);//если строка 3 в 0,

myPins[10] = strokaState3;//то присвоить ячейке 10 значение 0

Serial.print (myPins[10]);//вывести в сериал порт значение ячейки 10

if(strokaState4 == LOW);//если строка 4 в 0,

myPins[11] = strokaState4;//то присвоить ячейке 11 значение 0

Serial.print (myPins[11]);//вывести в сериал порт значение ячейки 11
//четвертый цикл опроса

strokaState1 = digitalRead(stroka1);//чиать 0 со строки 1

strokaState2 = digitalRead(stroka2);//чиать 0 со строки 2

strokaState3 = digitalRead(stroka3);//чиать 0 со строки 3






strokaState4 = digitalRead(stroka4);//чиать 0 со строки 4

digitalWrite(stolbec1, HIGH);//писать 1 в столбец 1

digitalWrite(stolbec2, HIGH);//писать 1 в столбец 2

digitalWrite(stolbec3, HIGH);//писать 1 в столбец 3

digitalWrite(stolbec4, LOW);//писать 0 в столбец 4

if(stolbec4 == LOW);//если столбец 4 в 0,

Serial.print ("D");//вывести в сериал порт значение столбец 4

if(strokaState1 == LOW);//если строка 1 в 0,

myPins[12] = strokaState1;//то присвоить ячейке 12 значение 0

Serial.print (myPins[12]);//вывести в сериал порт значение ячейки 12

if(strokaState2 == LOW);//если строка 2 в 0,

myPins[13] = strokaState2;//то присвоить ячейке 13 значение 0

Serial.print (myPins[13]);//вывести в сериал порт значение ячейки 13

if(strokaState3 == LOW);//если строка 3 в 0,

myPins[14] = strokaState3;//то присвоить ячейке 14 значение 0

Serial.print (myPins[14]);//вывести в сериал порт значение ячейки 14

if(strokaState4 == LOW);//если строка 4 в 0,

myPins[15] = strokaState4;//то присвоить ячейке 15 значение 0

Serial.print (myPins[15]);//вывести в сериал порт значение ячейки 15

digitalWrite(led1, LOW); //выключение сигнал жёлтый верхний, желтый верхний мигающий, включение при HIGH

digitalWrite(led2, HIGH); //ВКЛЮЧЕНИЕ СИГНАЛ КРАСНЫЙ

digitalWrite(led3, LOW); //выключение сигнал зелёный, включение при HIGH

digitalWrite(led4, LOW); //выключение сигнал жёлтый нижний, включение при HIGH

digitalWrite(led5, LOW); //выключение сигнал луннобелый мигающий - пригласительный, включение при HIGH

Serial.println (" "); // вывести в сериал порт "пробел", перенос каретки на новую строку

// включение огней светофора

// красный и луннобелый мигающий включить

if(myPins[2]==LOW&&myPins[3]==LOW)

{

digitalWrite(led5, HIGH); // луннобелый мигающий включить

delay(1000);

digitalWrite(led5, LOW); // луннобелый мигающий выключить

delay(1000);

Serial.println ("RED WHITE BLINK"); // вывести в сериал порт "RED"

}

// зеленый включить

if(myPins[4]==LOW&&myPins[5]==LOW)

{

digitalWrite(led2, LOW); // красный выключить

digitalWrite(led3, HIGH); // зеленый включить

Serial.println ("GREEN"); // вывести в сериал порт "GREEN"

}

// зеленый МИГАЮЩИЙ включить

if(myPins[5]==LOW&&myPins[6]==LOW)

{

digitalWrite(led2, LOW); // красный выключить

digitalWrite(led3, HIGH); // зеленый включить

delay(1000);

digitalWrite(led3, LOW); // зеленый выключить

delay(1000);

Serial.println ("GREEN BLINK"); // вывести в сериал порт "GREEN BLINK"

}

// желтый верхний включить

if(myPins[6]==LOW&&myPins[7]==LOW)

{

digitalWrite(led2, LOW); // красный выключить

digitalWrite(led1, HIGH); // желтый верхний включить

Serial.println ("YELOW"); // вывести в сериал порт "YELOW"

}

// желтый верхний МИГАЮЩИЙ включить

if(myPins[8]==LOW&&myPins[9]==LOW)

{

digitalWrite(led2, LOW); // красный выключить

digitalWrite(led1, HIGH); // желтый верхний включить

delay(1000);

digitalWrite(led1, LOW); // желтый верхний выключить

delay(1000);

Serial.println ("YELOW BLINK"); // вывести в сериал порт "YELOW BLINK"

}

// желтый верхний МИГАЮЩИЙ и желтый нижний включить

if(myPins[10]==LOW&&myPins[11]==LOW)

{

digitalWrite(led2, LOW); // красный выключить

digitalWrite(led4, HIGH); // желтый нижний включить

digitalWrite(led1, HIGH); // желтый верхний мигающий включить

delay(1000);

digitalWrite(led1, LOW); // желтый верхний мигающий выключить

delay(1000);

Serial.println ("YELOW @ YELOW BLINK"); // вывести в сериал порт "YELOW @ YELOW BLINK"

}

// желтый верхний и желтый нижний включить

if(myPins[12]==LOW&&myPins[13]==LOW)

{

digitalWrite(led2, LOW); // красный выключить

digitalWrite(led4, HIGH); // желтый нижний включить

digitalWrite(led1, HIGH); // желтый верхний включить

delay(500);

Serial.println ("YELOW @ YELOW"); // вывести в сериал порт "YELOW @ YELOW"

}

// желтый верхний и белый включить

if(myPins[14]==LOW&&myPins[15]==LOW&&myPins[0]==HIGH&&myPins[1]==HIGH&&myPins[2]==HIGH&&myPins[3]==HIGH&&myPins[4]==HIGH&&myPins[5]==HIGH)

{

digitalWrite(led2, LOW); // красный выключить

digitalWrite(led1, HIGH); // желтый верхний включить

digitalWrite(led5, HIGH); // белый включить

delay(500);

Serial.println ("YELOW @ WHITE"); // вывести в сериал порт "YELOW @ WHITE"

}

// зеленый и белый включить

if(myPins[0]==LOW&&myPins[1]==LOW&&myPins[2]==HIGH&&myPins[3]==HIGH&&myPins[4]==HIGH&&myPins[5]==HIGH)

{

digitalWrite(led2, LOW); // красный выключить

digitalWrite(led3, HIGH); // зеленый включить

digitalWrite(led5, HIGH); // белый включить

Serial.println ("GREEN @ WHITE"); // вывести в сериал порт "GREEN @ WHITE"

}

} // End loop









Кнопка Hello Word

Этот проект Был как простое ознакомление с Visual studio. Это базовый проект так что не будем на нем заострять внимание.

Крестики нолики

Этот проект тоже считается базовым но его создание мы рассмотрим поближе

Для начала мы создали три ряда по три кнопки как в пред идущем проекте а далее писали код






#include

using namespace std;

void show_cells();

void show_cells2();

void make_move(int num);

void make_move2(int num);

void result();

void result2();

char check();

char check2();

int write();

int write2();

char cells[9] = { '-', '-', '-', '-', '-', '-', '-', '-', '-' };

char cellss[25] = { '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-' };

int count1 = 0, count2 = 0;

int count11 = 0, count22 = 0;

 

char win = '-';

 

class player{

private:

    char name[20];

public:

   

    void setName(){

        char n[20];

        cin >> n;

        strcpy_s(name, n);

    }

    char *getName(){

        return name;

    }

    void printWinner(int n){

        if (n==1)

        cout << name << " WINNER! U'R SCORE =  " << count1 << endl;

else

cout << name << " WINNER! U'R SCORE =  " << count2 << endl;

    }

};

player PlayerName1, PlayerName2;

 

 

 

 

int main() {

    int a, b = 1; //???? ??????? ????.

    cout << "MENU" << endl;

    cout << "Enter a value 1 for 3x3 game" << endl;

   





cout << endl;

    cout << "Enter a value 2 for 5x5 game" << endl;

    cout << endl;

    cout << "0 - Exit " << endl;

    cout << endl;

    while (b == 1)

    {

        cin >> a;

        switch (a)

        {

        case 1:

            write();

            break;

        case 2:

            write2();

            break;

        case 0:

            b = 0;

            break;

        }

    }

    system("pause");

    return 0;

}

int write()//??????? ???? 3?3

{

    system("color F0");

    for (int i = 0; i < 9; i++)

    {

        cells[i] = '-';

    }

    cout << "Enter the name of the 1st player: ";

    PlayerName1.setName();

    cout << "Enter the name of the 2st player: ";

    PlayerName2.setName();

    cout << "\n";

    cout << "------------" << "\n" << endl;

    cout << "Numbers of cells:" << endl;

    cout << "____________" << endl;

    cout << "-" << 1 << "-" << '|' << "-" << 2 << "-" << '|' << "-" << 3 << "-" << "|" << endl;

    cout << "-" << 4 << "-" << '|' << "-" << 5 << "-" << '|' << "-" << 6 << "-" << "|" << endl;

    cout << "-" << 7 << "-" << '|' << "-" << 8 << "-" << '|' << "-" << 9 << "-" << "|" << endl;

    cout << "------------" << endl;

 

    for (int move = 1; move <= 9; move++) {

        if (move % 2)

            make_move(1);

        else make_move(2);

        show_cells();

        if (move >= 5)

     






  {

            win = check();

            if (win != '-')

                break;

        }

    }

    result();

    return 0;

}

int write2()//??????? ???? 5?5

{

    system("color F0");

    for (int i = 0; i < 25; i++)//???????? ???????? ????

    {

        cellss[i] = '-';

    }

    cout << "Enter the name of the 1st player: ";//???? ???? ???????

    PlayerName1.setName();

    cout << "Enter the name of the 2st player: ";

    PlayerName2.setName();

    cout << "\n";

 

    cout << "------------" << "\n" << endl;

    cout << "Numbers of cells:" << endl;

    cout << "____________" << endl;

    cout << " -" << 1 << "-" << '|' << " -" << 2 << "-" << '|' << " -" << 3 << "-" << '|' << " -" << 4 << "-" << '|' << "-" << 5 << "-" << " |" << endl;//??????? ??? ????? ?????? ?? ?????? ??????

    cout << " -" << 6 << "-" << '|' << " -" << 7 << "-" << '|' << " -" << 8 << "-" << '|' << " -" << 9 << "-" << '|' << "-" << 10 << "-" << "|" << endl;

    cout << "-" << 11 << "-" << '|' << "-" << 12 << "-" << '|' << "-" << 13 << "-" << '|' << "-" << 14 << "-" << '|' << "-" << 15 << "-" << "|" << endl;

    cout << "-" << 16 << "-" << '|' << "-" << 17 << "-" << '|' << "-" << 18 << "-" << '|' << "-" << 19 << "-" << '|' << "-" << 20 << "-" << "|" << endl;

    cout << "-" << 21 << "-" << '|' << "-" << 22 << "-" << '|' << "-" << 23 << "-" << '|' << "-" << 24 << "-" << '|' << "-" << 25 << "-" << "|" << endl;

    cout << "------------" << endl;

 

    for (int move = 1; move <= 25; move++) {

        if (move % 2)

            make_move2(1);

        else make_move2(2);

        show_cells2();

        if (move >= 9)

        {

            win = check2();

            if (win != '-')

                break;

        }

   






}

    result2();

    return 0;

}

void show_cells() {

    cout << "_____________" << endl;

    cout << "|-" << cells[0] << "-" << '|' << "-" << cells[1] << "-" << '|' << "-" << cells[2] << "-" << "|" << endl;

    cout << "|-" << cells[3] << "-" << '|' << "-" << cells[4] << "-" << '|' << "-" << cells[5] << "-" << "|" << endl;

    cout << "|-" << cells[6] << "-" << '|' << "-" << cells[7] << "-" << '|' << "-" << cells[8] << "-" << "|" << endl;

    cout << "-------------" << endl;

}

 

 

void show_cells2() {

    cout << "_____________________" << endl;

    cout << "|-" << cellss[0] << "-" << '|' << "-" << cellss[1] << "-" << '|' << "-" << cellss[2] << "-" << '|' << "-" << cellss[3] << "-" << '|' << "-" << cellss[4] << "-" << "|" << endl;

    cout << "|-" << cellss[5] << "-" << '|' << "-" << cellss[6] << "-" << '|' << "-" << cellss[7] << "-" << '|' << "-" << cellss[8] << "-" << '|' << "-" << cellss[9] << "-" << "|" << endl;

    cout << "|-" << cellss[10] << "-" << '|' << "-" << cellss[11] << "-" << '|' << "-" << cellss[12] << "-" << '|' << "-" << cellss[13] << "-" << '|' << "-" << cellss[14] << "-" << "|" << endl;

    cout << "|-" << cellss[15] << "-" << '|' << "-" << cellss[16] << "-" << '|' << "-" << cellss[17] << "-" << '|' << "-" << cellss[18] << "-" << '|' << "-" << cellss[19] << "-" << "|" << endl;

    cout << "|-" << cellss[20] << "-" << '|' << "-" << cellss[21] << "-" << '|' << "-" << cellss[22] << "-" << '|' << "-" << cellss[23] << "-" << '|' << "-" << cellss[24] << "-" << "|" << endl;

    cout << "---------------------" << endl;

}

 

 

void make_move(int num) {

    if (num == 1)

        cout << PlayerName1.getName();

    else cout << PlayerName2.getName();

    cout << "      enter a cell's number to make move: ";

    int cell;

    cin >> cell;

    cout << "\n";

    while (cell > 9 || cell < 1 || cells[cell - 1] == 'O' || cells[cell - 1] == 'X') {

        cout << "                  Enter a CORRECT (1-9) cell's number to make move: ";

        cin >> cell;

        cout << "\n";

    }

 

    if (num == 1)

        cells[cell - 1] = 'X';

    else

     





  cells[cell - 1] = 'O';

}

 

 

void make_move2(int num) { //ввод символов Х-0.

    if (num == 1)

        cout << PlayerName1.getName();

    else cout << PlayerName2.getName();

    cout << "     enter a cell's number to make move: ";

    int cell;

    cin >> cell;

    cout << "\n";

    while (cell > 25 || cell < 1 || cellss[cell - 1] == 'O' || cellss[cell - 1] == 'X') {

        cout << "                  Enter a CORRECT (1-25) cell's number to make move: ";

        cin >> cell;

        cout << "\n";

    }

 

    if (num == 1)

        cellss[cell - 1] = 'X';

    else

        cellss[cell - 1] = 'O';

}

 

 

void result() {//результат

    cout << "------------";

    if (win == 'X')

    {

        count1 += 0 + 20;

        PlayerName1.printWinner(1);

    }

    else if (win == 'O')

    {

        count2 += 0 + 20;//счет

    PlayerName2.printWinner(23);

    }

    else

        cout << "Draw!!!" << endl;

}

 

void result2() {

    cout << "------------";

    if (win == 'X')

    {

        count11 += 0 + 20;

        PlayerName1.printWinner(1);

    }

    else if (win == 'O')

   





{

        count22 += 0 + 20;

        PlayerName1.printWinner(1);

    }

    else

        cout << "Draw!!!" << endl;

}

 

 

 

char check()

{

    int i;

    for (i = 0; i < 3; i++)

    if (cells[i * 3 + 0] == cells[i * 3 + 1] && cells[i * 3 + 1] == cells[i * 3 + 2] && cells[i * 3 + 2] != '-')

        return cells[i * 3 + 1];

    else if (cells[i] == cells[3 + i] && cells[3 + i] == cells[6 + i] && cells[6 + i] != '-')

        return cells[3 + i];

    if ((cells[0] == cells[4] && cells[4] == cells[8] ||

        cells[2] == cells[4] && cells[4] == cells[6]) &&

        cells[4] != '-')

        return cells[4];

    return '-';

}

 

 

char check2()

{

//здесь вот нужно написать код для игры 5х5.

}

Калькулятор

Калькулятор работал по тому же принципу. Создаётся несколько столбцов кнопок затем программируется программная часть в которой устройство и будет производить расчёты и выводить пользователю результат вычислений. Код сюда вставлять не будем по причине того что он занимает много места.

Теория игр

Мы изучили теорию игр на примере на которой базируется принцип игровой механики в играх в которых для победы требуется набрать определённое количество очков. Так же изучили алгоритм работы бота который позволяет в подобных играх побеждать без проигрыша при соблюдении поставленных условий которые не учитываются алгоритмом .На этом принципе Строится поведение ботов во многих играх так же эти принципом широко пользуются в азартных играх.

Калькулятор на Arduino

Нам были предоставлены Arduino uno ,жидко-кристалический дисплей и клавиатура 4х4 ну и соответственно соеденительные провода

Предварительно собрав схему мы написали код. Была поставлена задача сделать функциональный калькулятор.















#include //Header file for LCD from https://www.arduino.cc/en/Reference/LiquidCrystal

#include //Header file for Keypad from https://github.com/Chris--A/Keypad

const byte ROWS = 4; // Four rows

const byte COLS = 4; // Three columns

// Define the Keymap

char keys[ROWS][COLS] = {

{ '7', '8', '9', 'D' },

{ '4', '5', '6', 'C' },

{ '1', '2', '3', 'B' },

{ '*', '0', '#', 'A' }

};

byte rowPins[ROWS] = { 0, 1, 2, 3 }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.

byte colPins[COLS] = { 4, 5, 6, 7 }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.






Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Create the Keypad

const int rs = 8,

en = 9,

d4 = 10,

d5 = 11,

d6 = 12,

d7 = 13; //Pins to which LCD is connected

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

long Num1, Num2, Number;

char key, action;

boolean result = false;

void setup() {

lcd.begin(16, 2); //We are using a 16*2 LCD display

lcd.print("DIY Calculator"); //Display a intro message

lcd.setCursor(0, 1); // set the cursor to column 0, line 1

lcd.print("-CircuitDigest"); //Display a intro message

delay(2000); //Wait for display to show info

lcd.clear(); //Then clean it

}






void loop() {

key = kpd.getKey(); //storing pressed key value in a char

if (key != NO_KEY)

DetectButtons();

if (result == true)

CalculateResult();

DisplayResult();

}

void DetectButtons() {

lcd.clear(); //Then clean it

if (key == '*') //If cancel Button is pressed

{ Serial.println("Button Cancel");

Number = Num1 = Num2 = 0;

result = false; }

if (key == '1') //If Button 1 is pressed

{

Serial.println("Button 1");






if (Number == 0)

Number = 1;

else

Number = (Number * 10) + 1; //Pressed twice

}

if (key == '4') //If Button 4 is pressed

{

Serial.println("Button 4");

if (Number == 0)

Number = 4;

else

Number = (Number * 10) + 4; //Pressed twice

}

if (key == '7') //If Button 7 is pressed

{

Serial.println("Button 7");

if (Number == 0)

Number = 7;

else

Number = (Number * 10) + 7; //Pressed twice

}






if (key == '0') {

Serial.println("Button 0"); //Button 0 is Pressed

if (Number == 0)

Number = 0;

else

Number = (Number * 10) + 0; //Pressed twice

}

if (key == '2') //Button 2 is Pressed

{

Serial.println("Button 2");

if (Number == 0)

Number = 2;

else

Number = (Number * 10) + 2; //Pressed twice

}

if (key == '5') {

Serial.println("Button 5");

if (Number == 0)

Number = 5;

else

Number = (Number * 10) + 5; //Pressed twice

}






if (key == '8') {

Serial.println("Button 8");

if (Number == 0)

Number = 8;

else

Number = (Number * 10) + 8; //Pressed twice

}

if (key == '#') {

Serial.println("Button Equal");

Num2 = Number;

result = true;

}

if (key == '3') {

Serial.println("Button 3");

if (Number == 0)

Number = 3;

else

Number = (Number * 10) + 3; //Pressed twice

}

if (key == '6') {






Serial.println("Button 6");

if (Number == 0)

Number = 6;

else

Number = (Number * 10) + 6; //Pressed twice

}

if (key == '9') {

Serial.println("Button 9");

if (Number == 0)

Number = 9;

else

Number = (Number * 10) + 9; //Pressed twice

}

if (key == 'A' || key == 'B' || key == 'C' || key == 'D') //Detecting Buttons on Column 4

{

Num1 = Number;

Number = 0;

if (key == 'A') { Serial.println("Addition");

action = '+'; }

if (key == 'B') { Serial.println("Subtraction");

action = '-'; }

if (key == 'C') { Serial.println("Multiplication");






action = '*'; }

if (key == 'D') { Serial.println("Devesion");

action = '/'; }

delay(100);

}

}

void CalculateResult() {

if (action == '+')

Number = Num1 + Num2;

if (action == '-')

Number = Num1 - Num2;

if (action == '*')

Number = Num1 * Num2;

if (action == '/')

Number = Num1 / Num2;

}

void DisplayResult() {






lcd.setCursor(0, 0); // set the cursor to column 0, line 1

lcd.print(Num1);

lcd.print(action);

lcd.print(Num2);

if (result == true) { lcd.print(" =");

lcd.print(Number); } //Display the result

lcd.setCursor(0, 1); // set the cursor to column 0, line 1

lcd.print(Number); //Display the result

}

SPlan

Это программа для создания схем и чертежей устройств. Программа проста в освоении и используется узконаправленно для создания схем .











Вывод

За эту практику мы болле подробно изучили код, лучше стали собирать схемы и освоили некоторые программы.


написать администратору сайта