Написать простую игру, например, пятнашки - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д