Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Помогите с курсачом..... надо написать игру сапер Добавлено: 18.10.10 17:33  

Автор вопроса:  ScaD | ICQ: 485352708 
Привет всем.....
Тут у вас нашел прогу готовую, Mine .NET (http://www.vbnet.ru/samples/download.aspx?id=766)

И понял что ничо не знаю... объясните как она работает...
Ну или можете посоветовать книжецу по VB.net...

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 18.10.10 19:34
ozon.ru

Ответить

Номер ответа: 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 кнопки:
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10.  
  11. namespace WindowsFormsApplication1
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.         Rectangle[,] pole = new Rectangle[10, 10];
  20.         bool[,] prov = new bool[10, 10];
  21.         bool[,] Flags = new bool[10, 10];
  22.         bool Game_Over = false;
  23.         private void rest()
  24.         {
  25.             Game_Over = false;
  26.             ///делаем поле 10x10, обнуляем мины и флаги
  27.             for (int i = 0; i < 10; i++)
  28.             {
  29.                 for (int j = 0; j < 10; j++)
  30.                 {
  31.                     pole[i, j] = new Rectangle(10 + 20 * i, 50 + 20 * j, 20, 20);
  32.                     prov[i, j] = false;
  33.                     Flags[i, j] = false;
  34.                 }
  35.             }
  36.             ///расставляем 10 мин
  37.             Random r = new Random();
  38.             bool b = false;
  39.             int a;
  40.             int a1;
  41.             for (int i = 0; i < 10; i++)
  42.             {
  43.                 a = r.Next(9);
  44.                 a1 = r.Next(9);
  45.                 ///если поле уже занято ввыбираем новое
  46.                 while (b == false)
  47.                 {
  48.                     if (prov[a, a1] == true)
  49.                     {
  50.                         a1 = r.Next(9);
  51.                     }
  52.                     else
  53.                     {
  54.                         b = true;
  55.                     }
  56.                 }
  57.                 prov[a, a1] = true;
  58.                 b = false;
  59.             }
  60.             /// перерисовываем форму
  61.             this.Invalidate();
  62.         }
  63.  
  64.  
  65.         private void button2_Click(object sender, EventArgs e)
  66.         {
  67.             Application.Exit(); ///Выход
  68.         }
  69.  
  70.         private void Form1_Load(object sender, EventArgs e)
  71.         {
  72.             ///добавляем событие перерисовки формы и генерируем поле
  73.             this.Paint += new PaintEventHandler(Form1_Paint);
  74.             rest();
  75.             ///добавляем событие клика по полю
  76.             this.MouseClick += new MouseEventHandler(Form1_MouseClick);
  77.         }
  78.  
  79.         private void Form1_MouseClick(object sender, MouseEventArgs e)
  80.         {
  81.             if (Game_Over == false)
  82.             {
  83.                 ///проверяем, попал ли пользователь по клетке поля и, если да, то проверяем клетку на мины, или ставим флаг, в зависимости от кнопки мыши
  84.                 for (int i = 0; i < 10; i++)
  85.                 {
  86.                     for (int j = 0; j < 10; j++)
  87.                     {
  88.                         if (pole[i, j].Contains(e.X, e.Y) == true)
  89.                         {
  90.                             if (e.Button == MouseButtons.Left)
  91.                             {
  92.                                 if (prov[i, j] == true)
  93.                                 {
  94.                                     Game_Over = true;
  95.                                     MessageBox.Show("Вы проиграли!!!", "К сожалению", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  96.                                 }
  97.                             }
  98.                             else
  99.                             {
  100.                                 Flags[i, j] = true;
  101.                             }
  102.                             break;
  103.                         }
  104.                     }
  105.                 }
  106.                 this.Invalidate();
  107.             }
  108.         }
  109.  
  110.         private void Form1_Paint(object sender, PaintEventArgs e)
  111.         {
  112.             ///рисуем на форме игровое поле и флаги
  113.             for (int i = 0; i < 10; i++)
  114.             {
  115.                 for (int j = 0; j < 10; j++)
  116.                 {
  117.                     e.Graphics.DrawRectangle(Pens.Black, pole[i, j]);
  118.                     if (Flags[i, j] == true)
  119.                     {
  120.                         e.Graphics.FillRectangle(Brushes.Blue, pole[i, j]);
  121.                     }
  122.                     if (Game_Over = true & prov[i,j] == true)
  123.                     {
  124.                         e.Graphics.FillRectangle(Brushes.Red, pole[i, j]);
  125.                     }
  126.                 }
  127.             }
  128.  
  129.         }
  130.  
  131.         private void button1_Click(object sender, EventArgs e)
  132.         {
  133.             rest();
  134.         }
  135.     }
  136. }
  137.  

Ответить

Номер ответа: 4
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #4 Добавлено: 19.10.10 10:50
Тока пока не доработано немного,не выводит сколько мин у нажатой кнопки. Я с пар приду, доработаю, ок?

Ответить

Номер ответа: 5
Автор ответа:
 ScaD



ICQ: 485352708 

Вопросов: 1
Ответов: 1
 Профиль | | #5 Добавлено: 19.10.10 17:49
ок.... токо я несилен в C#, но постараюсь разобраться.....

Ответить

Номер ответа: 6
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #6 Добавлено: 19.10.10 23:20
в принципе, это уже готовая игра, в коде комментарии есть, доделать пока не смогу загрузили слишком(

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам