Написать простую игру, например, пятнашки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Написать простую игру, например, пятнашки»

textual
Листинг программы
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
 
using std::cout;
using std::cin;
using std::endl;
 
static char X[3][3];
 
static void wait()
{
    cout << "Calculating  ";
    for (int i = 0; i < 2; i++)
    {
        Sleep(300);
        cout << "\b.";
        Sleep(300);
        cout << ".";
        Sleep(300);
        cout << ".";
        Sleep(300);
        cout << "\b ";
        Sleep(300);
        cout << "\b\b ";
        Sleep(300);
        cout << "\b\b ";
    }
}
static bool instruction(char a[], char b[])
{
    cout << "\t\tКрестики нолики." << endl;
    cout << "-Вы можете играть с другим игроком или против компьютера." << endl;
    cout << "-Ход осуществляеться вводом цифр от 1 до 9 которые соответствуют полю" << endl;
    cout << "-Побеждает тот кто сделает победную комбинацию." << endl;
    cout << "-Победная комбинация это линия X или 0 по диагоналям, верикалям или горизонталям" << endl;
    cout << "\nПоле :\n";
 
    int l = 0;
    int c;
    for (int i = 0; i < 3; i++)
    {
        cout << "\t";
        for (int j = 0; j < 3; j++)
        {
            X[i][j] = char(49 + l);
            l++;
            cout << " | " << X[i][j];
        }
        cout << " |" <<endl;
    }
 
    cout << "Вы хотите играть вдвоем или с компьютером ?" << endl;
    cout << "1.Вдвоем  2.Компьютер" << endl;
    cout << "Выбор : ";
    cin >> c;
 
    switch (c)
    {
    case 1:
        system("cls");
        fflush(stdin);
        cout << "Введите имя 1го игрока : ";
        cin.getline(a,15);
        cout << "Введите имя 2го игрока : ";
        cin.getline(b, 15);
        return true;
    case 2:
        system("cls");
        fflush(stdin);
        cout << "Введите ваше имя : ";
        cin.getline(b, 15);
        return false;
    }
}
static bool choose()
{
    if (rand() & 1 == 1)
        return true;
    else
        return false;
}
static bool swap(bool a)
{
    if (a==true)
        return false;
    else
        return true;
}
static bool win()
{
    if (X[0][0] == 'X' && X[1][1] == 'X' && X[2][2] == 'X' || X[0][0] == '0' && X[1][1] == '0' && X[2][2] == '0')
        return true;
    else
    {
        if (X[0][2] == 'X'  && X[1][1] == 'X'  && X[2][0] == 'X' || X[0][2] == '0'  && X[1][1] == '0'  && X[2][0] == '0')
            return true;
        else
        {
            if (X[0][0] == 'X'  && X[0][1] == 'X'  && X[0][2] == 'X' || X[0][0] == '0'  && X[0][1] == '0'  && X[0][2] == '0')
                return true;
            else
            {
                if (X[1][0] == 'X' && X[1][1] == 'X' && X[1][2] == 'X' || X[1][0] == '0' && X[1][1] == '0' && X[1][2] == '0')
                    return true;
                else
                {
                    if (X[2][0] == 'X' && X[2][1] == 'X' && X[2][2] == 'X' || X[2][0] == '0' && X[2][1] == '0' && X[2][2] == '0')
                        return true;
                    else
                    {
                        if (X[0][0] == 'X' && X[1][0] == 'X' && X[2][0] == 'X' || X[0][0] == '0' && X[1][0] == '0' && X[2][0] == '0')
                            return true;
                        else
                        {
                            if (X[0][1] == 'X' && X[1][1] == 'X' && X[2][1] == 'X' || X[0][1] == '0' && X[1][1] == '0' && X[2][1] == '0')
                                return true;
                            else
                            {
                                if (X[0][2] == 'X' && X[1][2] == 'X' && X[2][2] == 'X' || X[0][2] == '0' && X[1][2] == '0' && X[2][2] == '0')
                                    return true;
                            }
                        }
                    }
                }
            }
        }
    }
}
static void step(char a[],char b[],bool c)
{
    system("cls");
 
    int l;
    bool d = false;
 
    if (c == true)
        cout << "Ходит " << a  << " (Крестики)" << endl;
    else
        cout << "Ходит " << b << " (Нолики)" << endl;
 
    for (int i = 0; i < 3; i++)
    {
        cout << "\t";
        for (int j = 0; j < 3; j++)
        {
            cout << " | " << X[i][j];
        }
        cout << " |" << endl;
    }
 
    do
    {
        do
        {
            fflush(stdin);
            cout << "Ход : " << endl;
            cin >> l;
            if (l<1 || l>9)
                cout << "Ошибка повторите ввод" << endl;
        } while (l<1 || l>9);
 
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                if (X[i][j] == char(48 + l) && X[i][j] != 'X' && X[i][j] != '0')
                {
                    if (c == true)
                    {
                        X[i][j] = 'X';
                        d = true;
                    }
                    else
                    {
                        X[i][j] = '0';
                        d = true;
                    }
                }
            }
        }
 
        if (d == false)
            cout << "Эта позиция занята повторите ввод" << endl;
    } while (d == false);
 
    system("cls");
    for (int i = 0; i < 3; i++)
    {
        cout << "\t";
        for (int j = 0; j < 3; j++)
        {
            cout << " | " << X[i][j];
        }
        cout << " |" << endl;
    }
}
static void easyii(char a[], char b[], bool c)
{
    system("cls");
 
    int l;
    bool d = false;
 
    if (c == true)
        cout << "Ходит " << a << endl;
    else
        cout << "Xодит " << b << endl;
 
    for (int i = 0; i < 3; i++)
    {
        cout << "\t";
        for (int j = 0; j < 3; j++)
        {
            cout << " | " << X[i][j];
        }
        cout << " |" << endl;
    }
 
    if (c == true)
        wait();
    
    do
    {
        do
        {
            if (c == true)
            {
                fflush(stdin);
                l = 1 + rand() % (10 - 1);
            }
            else
            {
 
                fflush(stdin);
                cout << "Ход : " << endl;
                cin >> l;
                if (l<1 || l>9&&c==false)
                    cout << "Ошибка повторите ввод" << endl;
            }
        } while (l<1 || l>9);
 
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                if (X[i][j] == char(48 + l) && X[i][j] != 'X' && X[i][j] != '0')
                {
                    if (c == true)
                    {
                        X[i][j] = 'X';
                        d = true;
                    }
                    else
                    {
                        X[i][j] = '0';
                        d = true;
                    }
                }
            }
        }
 
        if (d == false&&c==false)
            cout << "Эта позиция занята повторите ввод" << endl;
    } while (d == false);
 
    system("cls");
    for (int i = 0; i < 3; i++)
    {
        cout << "\t";
        for (int j = 0; j < 3; j++)
        {
            cout << " | " << X[i][j];
        }
        cout << " |" << endl;
    }
 
}
 
int main(int argc,char *argv[])
{
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    char Name1[30], Name2[30], Computer[] = "Computer";
    bool turn;
 
    if (instruction(Name1, Name2) == true)
    {
        turn = choose();
 
        for (int i = 0; i < 9; i++)
        {
            step(Name1, Name2, turn);
            if (win() == true)
            {
                if (turn == true)
                {
                    cout << "Победил " << Name1 << endl;
                    _getch();
                    return 0;
                }
                else
                {
                    cout << "Победил " << Name2 << endl;
                    _getch();
                    return 0;
                }
            }
            turn = swap(turn);
        }
 
 
        if (win() != true)
        {
            system("cls");
            cout << "Ничья !!!" << endl;
        }
 
    }
    else
    {
        turn = choose();
 
        for (int i = 0; i < 9; i++)
        {
            easyii(Computer, Name2, turn);
            if (win() == true)
            {
                if (turn == true)
                {
                    cout << "Победил " << Computer << endl;
                    _getch();
                    return 0;
                }
                else
                {
                    cout << "Победил " << Name2 << endl;
                    _getch();
                    return 0;
                }
            }
            turn = swap(turn);
        }
 
        if (win() != true)
        {
            system("cls");
            cout << "Ничья !!!" << endl;
        }
    }
    _getch();
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы