Задание на программу:
- Имеется набор из 52 карточек, на которых записаны числа от 1 до 13, причем карточки с каждым из этих чисел встречаются четырежды.
- Разработать программу, которая позволяет имитировать игру человека с компьютером. Имеется квадратное поле с 25 клетками.
- Программа случайным образом извлекает какую-либо из имеющихся карточек и выдает записанное на ней число. Каждый игрок заносит это число в одну из клеток квадрата. Так продолжается до тех пор, пока не будут заполнены все клетки квадрата.
1 |
1 |
7 |
1 |
7 |
(80) |
2 |
10 |
2 |
13 |
2 |
(40) |
5 |
12 |
13 |
5 |
7 |
(10) |
3 |
3 |
3 |
11 |
3 |
(160) |
4 |
12 |
4 |
13 |
12 |
(20) |
(20) |
(50) |
(10) |
(10) |
(160) |
|
По окончанию игры заполнение соответствующего квадрата оценивается определенным количеством очков. Цель игры — разместить числа в клетках так, чтобы набрать наибольшее количество очков в соответствии с данной таблицей:
Комбинации чисел |
В ряду или столбце |
По диагонали |
За 2 одинаковых числа |
10 очков |
20 очков |
За 2 пары одинаковых чисел |
20 очков |
30 очков |
За 3 одинаковых числа |
40 очков |
50 очков |
За 3 одинаковых числа и два других одинаковых числа |
80 очков |
90 очков |
За 4 одинаковых числа |
160 очков |
170 очков |
За 5 последовательных чисел, но не обязательно по порядку расположенных |
50 очков |
60 очков |
За три раза по 1 и два раза по 13 |
100 очков |
110 очков |
За числа 1, 13, 12, 11 и 10, но не обязательно по порядку расположенных |
150 очков |
160 очков |
За 4 единицы |
200 очков |
210 очков |
Фрагмент программного кода:
public partial class GameForm : Form
{
//информация о полях игроков
CardField PlayerField, ComputerField;
//колода карт
Deck deck;
public GameForm()
{
InitializeComponent();
}
private void GameForm_Shown(object sender, EventArgs e)
{
//начальные настройки
PlayerField = new CardField();
ComputerField = new CardField();
deck = new Deck();
deck.NextCard();
this.CardLabel.Text = "Текущая карта: " + deck.LastCard.ToString();
}
private void PlayerPanel_Paint(object sender, PaintEventArgs e)
{
PlayerField.DrawField(this.PlayerPanel.CreateGraphics());
}
private void ComputerPanel_Paint(object sender, PaintEventArgs e)
{
ComputerField.DrawField(this.ComputerPanel.CreateGraphics());
}
private void PlayerPanel_MouseClick(object sender, MouseEventArgs e)
{
//если ячейка игрока пустая в нее заностися число
Point cell = PlayerField.GetCell(e.X, e.Y);
if (PlayerField.Cell[cell.X, cell.Y] != CardField.NO_CARD)
return;
PlayerField.Cell[cell.X, cell.Y] = deck.LastCard;
//ход AI
ComputerField.AI_Step( deck );
//перерисовка паналей
PlayerPanel.Invalidate();
ComputerPanel.Invalidate();}
Скриншот архива с проектом:


Содержание архива
- исходный код на C# для Visual Studio
klausms