- •Общие сведения о выполнении курсовой работы
- •Задание на курсовой проект
- •Порядок выполнения работы
- •Содержание пояснительной записки
- •Задание
- •Правила игры
- •Структуры данных
- •Описание основного алгоритма игры
- •Описание классов
- •Руководство пользователя
- •Выводы
- •Варианты заданий
- •Полезные функции для консольных приложений
- •Генерация случайных чисел
- •Переместить курсор в заданную позицию
- •Установить видимость курсора
- •Очистить экран
- •Была ли нажата клавиша
- •Какая клавиша была нажата
- •Задержка
- •Литература
vk.com/club152685050
31.Компьютерная реализация карточной игры «Покер».
32.Компьютерная реализация карточной игры «1000».
33.Компьютерная реализация карточной игры «Дурак».
34.Компьютерная реализация карточного пасьянса «Девятка».
35.Компьютерная реализация карточной игры «Блэк Джек».
Полезные функции для консольных приложений
Перед каждой функцией указываются необходимые библиотеки. Если используется несколько функций, то подключать библиотеки следует одноразово в начале программы.
Генерация случайных чисел
#include <cstdlib> #include <cmath> #include <ctime>
int rand_int(int a, int b)
{
return rand() % (b-a) + a;
}
double rand_double(double a, double b)
{
return double(rand()) / RAND_MAX * (b-a) + a;
}
int main()
{
// сбросить датчик псевдослучайных чисел srand(time(NULL));
...
}
Переместить курсор в заданную позицию
#include <windows.h>
void MoveCursor(int x, int y)
{
// Координаты COORD pos; pos.X = x; pos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
6
vk.com/club152685050
Установить видимость курсора
#include <windows.h>
void SetCursorVisibility(bool isVisible)
{
CONSOLE_CURSOR_INFO ci; ci.bVisible = isVisible; ci.dwSize = 1;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &ci);
}
Очистить экран
#include <cstdlib> void ClearScreen()
{
// Вариант 1. system("cls");
}
или более предпочтительней:
#include <windows.h> void ClearScreen()
{
// Вариант 2.
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); if (hStdOut == INVALID_HANDLE_VALUE)
return;
/* Get the number of cells in the current buffer */ CONSOLE_SCREEN_BUFFER_INFO csbi;
if (!GetConsoleScreenBufferInfo(hStdOut, &csbi)) return;
DWORD cellCount = csbi.dwSize.X *csbi.dwSize.Y;
/* Fill the entire buffer with spaces */ DWORD count;
COORD homeCoords = {0, 0};
if (!FillConsoleOutputCharacter(hStdOut, (TCHAR) ' ', cellCount, homeCoords, &count))
return;
/* Fill the entire buffer with the current colors and attributes */ if (!FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, cellCount,
homeCoords, &count)) return;
/* Move the cursor home */ SetConsoleCursorPosition(hStdOut, homeCoords);
}
7
vk.com/club152685050
Была ли нажата клавиша
Функция _kbhit возвращает ненулевое значение, если была нажата какая-либо клавиша. В противном случае возвращает ноль.
#include <conio.h> int _kbhit();
Какая клавиша была нажата
Функция _getch возвращает ASCII-код нажатой клавиши. Если клавиша не была нажата, то производится ожидания нажатия. Некоторые клавиши (такие как стрелки, HOME, DELETE, PageUp, PageDown и т.д.) имеют расширенный код, который занимает два байта вместо одного. В этом случае, функция _getch возвращает значение 0 или 224 (0xE0 в шестнадцатеричной системе счисления) в качестве первого байта, и повторный вызов функции _getch возвращает второй байт.
#include <conio.h> int _getch();
Пример:
// Какая-нибудь клавиша нажата? if (_kbhit())
{
//Получить её код unsigned char c = _getch();
//Если это функциональная клавиша ...
if (c == 0 || c == 0xE0)
{
// то получить расширенный код c = _getch();
switch (c)
{
case 72:
cout << "Нажата клавиша ВВЕРХ " << endl; break;
case 80:
cout << "Нажата клавиша ВНИЗ " << endl; break;
case 75:
cout << "Нажата клавиша ВЛЕВО " << endl; break;
case 77:
cout << "Нажата клавиша ВПРАВО " << endl; break;
case 83: // Клавиша DEL ClearScreen(); break;
default:
8