Задание на программу:
- Имеется набор из 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