Страница: 1 |
|
Вопрос: Помогите с курсачом..... надо написать игру сапер
|
Добавлено: 18.10.10 17:33
|
|
Автор вопроса: ScaD | ICQ: 485352708
|
Привет всем.....
Тут у вас нашел прогу готовую, Mine .NET (http://www.vbnet.ru/samples/download.aspx?id=766)
И понял что ничо не знаю... объясните как она работает...
Ну или можете посоветовать книжецу по VB.net...
Ответить
|
Номер ответа: 2 Автор ответа: UnDeAdZak
Вопросов: 80 Ответов: 476
|
Профиль | | #2
|
Добавлено: 19.10.10 00:06
|
Кароче, сапёра можно сделать примерно так:
1) создаёш двумерный массив rectangle, прорисовываеш его в событии paint.
2) создаёш такойже двумерный массив boolean, и в нём рандомно указываеш мины.
3) делаеш обработчик события mouse klick по форме, и в нём вводиш проверку, находится ли курсор в одном из квадратов, после чего проверяеш какой кнопкой кликнуто. если правой, то рисуеш флажок, если левой, то проверяеш по 2 массиву, есть ли там мина. Если есть, то гамовер, и т.д.
Ответить
|
Номер ответа: 3 Автор ответа: UnDeAdZak
Вопросов: 80 Ответов: 476
|
Профиль | | #3
|
Добавлено: 19.10.10 10:49
|
Вот, я тут код на C# набросал, на форме 2 кнопки:
-
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
-
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- Rectangle[,] pole = new Rectangle[10, 10];
- bool[,] prov = new bool[10, 10];
- bool[,] Flags = new bool[10, 10];
- bool Game_Over = false;
- private void rest()
- {
- Game_Over = false;
- ///делаем поле 10x10, обнуляем мины и флаги
- for (int i = 0; i < 10; i++)
- {
- for (int j = 0; j < 10; j++)
- {
- pole[i, j] = new Rectangle(10 + 20 * i, 50 + 20 * j, 20, 20);
- prov[i, j] = false;
- Flags[i, j] = false;
- }
- }
- ///расставляем 10 мин
- Random r = new Random();
- bool b = false;
- int a;
- int a1;
- for (int i = 0; i < 10; i++)
- {
- a = r.Next(9);
- a1 = r.Next(9);
- ///если поле уже занято ввыбираем новое
- while (b == false)
- {
- if (prov[a, a1] == true)
- {
- a1 = r.Next(9);
- }
- else
- {
- b = true;
- }
- }
- prov[a, a1] = true;
- b = false;
- }
- /// перерисовываем форму
- this.Invalidate();
- }
-
-
- private void button2_Click(object sender, EventArgs e)
- {
- Application.Exit(); ///Выход
- }
-
- private void Form1_Load(object sender, EventArgs e)
- {
- ///добавляем событие перерисовки формы и генерируем поле
- this.Paint += new PaintEventHandler(Form1_Paint);
- rest();
- ///добавляем событие клика по полю
- this.MouseClick += new MouseEventHandler(Form1_MouseClick);
- }
-
- private void Form1_MouseClick(object sender, MouseEventArgs e)
- {
- if (Game_Over == false)
- {
- ///проверяем, попал ли пользователь по клетке поля и, если да, то проверяем клетку на мины, или ставим флаг, в зависимости от кнопки мыши
- for (int i = 0; i < 10; i++)
- {
- for (int j = 0; j < 10; j++)
- {
- if (pole[i, j].Contains(e.X, e.Y) == true)
- {
- if (e.Button == MouseButtons.Left)
- {
- if (prov[i, j] == true)
- {
- Game_Over = true;
- MessageBox.Show("Вы проиграли!!!", "К сожалению", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
- }
- }
- else
- {
- Flags[i, j] = true;
- }
- break;
- }
- }
- }
- this.Invalidate();
- }
- }
-
- private void Form1_Paint(object sender, PaintEventArgs e)
- {
- ///рисуем на форме игровое поле и флаги
- for (int i = 0; i < 10; i++)
- {
- for (int j = 0; j < 10; j++)
- {
- e.Graphics.DrawRectangle(Pens.Black, pole[i, j]);
- if (Flags[i, j] == true)
- {
- e.Graphics.FillRectangle(Brushes.Blue, pole[i, j]);
- }
- if (Game_Over = true & prov[i,j] == true)
- {
- e.Graphics.FillRectangle(Brushes.Red, pole[i, j]);
- }
- }
- }
-
- }
-
- private void button1_Click(object sender, EventArgs e)
- {
- rest();
- }
- }
- }
-
Ответить
|
Страница: 1 |
Поиск по форуму