43226

Разработка программы реализующей игру «морской бой»

Курсовая

Информатика, кибернетика и программирование

Алгоритмы реализации игры Реализацию программы я начал с того что описал базовый класс который будет содержать поля и методы общие для игрока и компьютерного оппонента назвав его Mtr. В обоих классах есть унаследованное от базового класса Mtr поле life по умолчанию равное 20 количество палуб как только у кого то из соперников оно становится равным 0 на экран выводится соответствующее сообщение о победе одного из игроков. Приложение 1 Некоторые детали программного кода Базовый класс Cmtr хранится в файле Cmtr.h ifndef MTR define...

Русский

2013-11-04

228 KB

90 чел.

PAGE  2

Міністерство освіти і науки України

Харківський національний університет радіоелектроніки

Факультет             Прикладна математика та менеджмент

(повна назва)

Кафедра                  Прикладна математика

(повна назва)

Напрямок   Інформатика

                                  (повна назва)

ПОЯСНЮВАЛЬНА ЗАПИСКА

до курсової роботи з дисципліни Програмування

за темою

“Морський бій”

Виконав:       Перевірив:

студент гр.  ПМ-08-1_______    Любченко В.А.          .

           (шифр групи)                          (посада, ініціали, прізвище)                      

Демерчян К.А.______________    ________________________________

(ініціали, прізвище)       (підпис)   

2009 р.


Х
НУРЭ

(наименование высшего учебного заведения)

Кафедра Информатика

 

Дисциплина Программирование

Специальность Информатика

Курс       1-й____Группа    ПМ-08-1 _____Семестр  ___II_________________ 

З А Д А Н И Е

на курсовой проект (работу) студента

_________________________________________________________

(фамилия, имя, отчество)

1. Тема проекта (работы)    Разработка программы реализующей игру «морской бой»

__________________________________________________________________________________________________________________________________________________________

2. Срок сдачи студентом законченного проекта (работы)      

3. Исходные данные к проекту  (работе)  Работа в Visual studio 2005, методы разработки приложения  

4. Содержание расчётно-пояснительной записки (перечень подлежащих разработке вопросов)

Введение, Среда разработки, Алгоритмы реализации игры, Инструкция пользователя,  

_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________

5. Перечень графического материала (с точным указанием обязательных чертежей)    

       

       

6. Дата выдачи задания 


КАЛЕНДАРНЫЙ     ПЛАН

Пор. N

Название этапов курсового проекта (работы)

Срок выполнения этапов проекта (работы)

Примечания

1

Поиск необходимой литературы

01.02 – 28.02

Выполнено

2

Поиск необходимого программного обеспечения

1.03 – 10.03

Выполнено

3

Ознакомление с возможностями

11.03 – 24.03

Выполнено

4

Адаптация программного обеспечения к поставленной задаче

24.03 – 3 1.03

Выполнено

5

Написание программ-примеров

1.04 – 31.05

Выполнено

6

Оформление пояснительной записки

1.06 – 6.06

Выполнено

7

Курсовой проект выполнен

6.06

Выполнено

Студент____________________________            Демерчян К.А.        

                                 (подпись)                                     (фамилия, инициалы)

Руководитель_______________________            Любченко В. А.

                                 (подпись)                                     (фамилия, инициалы)

“_______”_________________2009г.   


РЕФЕРАТ

Курсова робота: 35 с., 5 рис., 1 приложение, 18 джерел.

Работа представляет программную реализацию игры морской бой, на языке программирования C++, с использованием среды разработки Visual Studio 2005, Win Forms.

МОРСКОЙ БОЙ, WIN FORMS, VISUAL STUDIO 2005, СТРУКТУРА, КЛАСС, АЛГОРИТМЫ


СОДЕРЖАНИЕ:

Содержание…………………………………………….…………………......5

Введение………………………………………………….…………………...6

1. Среда разработки………….………………………….……………………8

2. Алгоритмы реализации игры..…………………….………………………8

3. Инструкция пользователя…………………………………..…………….11

Выводы……………………...…………………………………..…………….13

Перечень ссылок……………………………………………………………...14

Приложение 1………………………………………………………………...15

 


ВВЕДЕНИЕ

«Морской бой» — игра для двух участников, в которой игроки по очереди называют координаты на неизвестной им карте соперника. Если у соперника по этим координатам имеется корабль (координаты заняты), то корабль или его часть «топится», а попавший получает право сделать ещё один ход. Цель игрока — первым поразить все корабли противника.

Правила размещения кораблей(флота)

Игровое поле — квадрат 10х10 у каждого игрока, на котором игрок размещает свои корабли. Размещаются:

1 корабль — ряд из 4 клеток (четырёх палубный)

2 корабля — ряд из 3 клеток (трёх палубный)

3 корабля — ряд из 2 клеток (двух палубный)

4 корабля — ряд из 1 клетки (одно палубный)

При размещении корабли не могут касаться друг друга даже углами (в классическом варианте игры).

Рядом со «своим» квадратом чертится «чужой» такого же размера, только пустой. Это участок моря, где плавают чужие корабли противника.

Поиск и потопление кораблей противника

Перед началом боевых действий игроки бросают жребий или договариваются, кто будет ходить первым.

Игрок, выполняющий ход, совершает выстрел — называет вслух координаты клетки, в которой, по его мнению, находится корабль противника.

Если выстрел пришёлся в клетку, не занятую ни одним кораблём противника, то следует ответ «Мимо!» и стрелявший игрок ставит на чужом квадрате в этом месте точку. Право хода переходит к сопернику.

Победителем считается тот, кто первым потопит все 10 кораблей противника.

Компьютерная реализация данной игры представленная данной курсовой работой позволяет играть в морской бой с компьютерным оппонентом. Программа написана на языке программирования C++ в среде разработки Microsoft Visual Studio 2005.

  1.  
    Среда разработки

Для работы при написании программной реализации игры «Морской бой» была выбрана среда разработки Microsoft Visual Studio 2005. Она позволяет удобно и быстро разрабатывать программные приложения. Microsoft Visual Studio 2005 очень удобна в использовании, имеет функциональный и интуитивно понятный интерфейс. В данный момент она является одной из самых популярных сред разработки. В данной среде очень удобно реализованная система помощи и подсказок, что очень благоприятно сказывается на скорости разработки программ.

Win Forms позволяет быстро создавать визуальные компоненты программы. Windows Forms - это, как пишут в MSDN, новая платформа для создания Windows-приложений на платформе .NET, содержащая набор объектно-ориентированных классов. Также Windows Forms может представлять собой графический интерфейс пользователя (GUI) в многоуровневых приложениях. Но это сухие слова из MSDN. Понятие Windows Forms включает в себя все то, что вы каждый раз видите перед собой на Toolbox в Visual Studio .NET. Это все классы и контролы, которые используются для создания приложений при работе с формой (в дизайнере или в коде). По своей "глубинной" сути форма является контролом, поскольку наследует от System.Windows.Forms.ContainerControl, но это уже внутреннее устройство Windows Forms с которым вы можете легко ознакомиться используя Object Browser (по-умолчанию F2 в Visual Studio 2005, Ctrl+Alt+J в Visual Studio 2003).

 

  1.  
    Алгоритмы реализации игры

Реализацию программы я начал с того, что описал базовый класс, который будет содержать поля и методы общие для игрока и компьютерного оппонента назвав его Matr.

Его наследуют два других класса  User и Comp,  которые являются реализацией интерфейса и данных пользователь и его компьютерного оппонента.

У пользователя и компьютера есть две матрицы, первая хранит поле игрока (компьютера) вторая используется для стрельбы по полю врага.

Пользователь вручную расставляет свои корабли, для этого реализованы методы Set4, Set3, Set2, Set1 -  расстановки четырех-, трех-, двух-, и однопалубного кораблей. Сначала предлагается установить четырехпалубный корабль, затем два трехпалубных, три двухпалубных и в конце один однопалубный. После чего запускается метод из класса Comp случайной расстановки кораблей. Псевдослучайным образом генерируются два числа, и производится проверка, можно ли установить туда корабль, если можно то он устанавливается, в противном случае, числа генерируются заново, и выполняется таже проверка. Для этого каждый поставленный корабль в матрицу окружается значениями -1, показывающими, что ставить новый корабли нужно не ближе чем через 1 клетку от уже расположенного.

Затем запускается основной цикл игры, когда игрок и компьютер поочередно обмениваются выстрелами. В случае попадания, дается бонусный ход. Компьютер при стрельбе пользуется функцией генерации случайных чисел.

Данные классы подключены к форме, где на двух PictureBox отображается поле с кораблями игрока и поле стрельбы по компьютеру. При помощи рисования поверх PictureBox происходит динамическое отображение изменений в игровом процессе.

По событию нажатия мышкой на первый PictureBox происходит установка кораблей пользователя, после того как они все установлены, позволяется нажимать на второй PictureBox, в результате чего происходит стрельба по полю соперника.

Расстановка и стрельба выполнены путем получения координат нажатия на PictureBox и передача их в функции стрельбы либо установки кораблей.

В обоих классах есть унаследованное от базового класса Matr поле life, по умолчанию равное 20 (количество палуб), как только у кого то из соперников оно становится равным 0, на экран выводится соответствующее сообщение о победе одного из игроков.


3. Инструкция пользователя

После запуска игры откроется окно.

Слева находится поле для кораблей игрока, справа поле ведения боевых действий.

Для начала игры нужно нажать на «Игра», и выбрать из выпадающего списка «Новая».

После нажатия будет предложено расставить корабли. По центру формы будет сообщатся какой корабль устанавливается сейчас.

После установки всех кораблей пользователя компьютер случайным образом расставит свои корабли, что может занять несколько секунд, во время которых программа может не отвечать на действия пользователя.

После чего начинается непосредственно игра.

Игру в любой момент можно прервать нажав «Игра» и выбрать из выпадающего меню «Выйти из игры».


В
ЫВОД

В процессе выполнения данного курсового проекта были приобретены основные навыки работы со средой программирования Microsoft Visual Studio C++ 2005,CRL.А также были изучены и проанализированы различные методы создания и прохождения лабиринта.


ЛИТЕРАТУРА И ИСТОЧНИКИ

  1.  Мозгов М.В. «Занимательное программирование. Самоучитель». –СПб: Питер, 2005. -208с.
  2.  Мозгов М. В. «С++ мастер-класс. 85 нетривиальных проэктов, решений задач». –СПб: Наука и Техника, 2007. -208с.
  3.  Бондаренко М. Ф., Бритик В. И., Свинар М. К. Конспект лекций. Часть I «Алгоритмические языки и программирование».-Харьков: Компания СМИТ, 2004.-221 с.
  4.    Кормен, Томас, Лейзерсон, Ривест, Штайн «Алгоритмы: построение и анализ 2-е издание».: Пер с англ.- М. Издательский дом «Вильямс»,2007.-1296с.
  5.  Дворак Дж. 350 игр для IBM PC. –С-Пб.:Пергамент, 1994, -318с.
  6.  Павловская Т. А. С/С++ программирование на языке высокого уровня.-С.Пт.: Питер, 2002.-460 с.
  7.  Ричард С. Линкер, Том Арчер. Программирование для Windows 98. Библия  разработчика.-М.: Диалектика ,1999.-864 с.
  8.  Хемминг Р.В.  Цифровые фильтры. – М.: Недра, 1987. – 221 с.


Приложение 1

Некоторые детали программного кода

Базовый класс Cmatr, хранится в файле Cmatr.h

#ifndef MATR

#define MATR

#include <iostream>

class Matr{

public:

 unsigned int n;

 unsigned int m;

 int **matr;

 int **matr2;

 int four;

 int three;

 int two;

 int one;

 bool ifready;

 int life;

Matr(){

 n=10;

 m=10;

 four=1;

 three=2;

 two=3;

 one=4;

 life=20;

 ifready = false;

 matr=new int *[n];

 matr2=new int *[n];

 for(int i=0;i<n;++i)

 {

  matr[i]=new int [m];

  matr2[i]=new int [m];

 }

 

}

 virtual ~Matr()

{

 for(int i=0;i<n;++i)

  delete []matr[i];

 delete []matr;

 matr=NULL;

}

 void setnull()

{

 for(int i=0;i<n;++i)

  for(int j=0;j<m;++j)

  {

   matr[i][j]=0;

   matr2[i][j]=0;

   four=1;

   three=2;

   two=3;

   one=4;

   life=20;

   ifready = false;

  }

}

 void prepare()

{

 for(int i=0;i<n;++i)

 {

  for(int j=0;j<n;++j)

  {

   if(matr[i][j]==-1)

   {

    matr[i][j]=0;

   }

  }

 }

}

};

#endif

Класс пользователя User хранится в файле User.h

#include "cMatr.h"

#include <time.h>

#ifndef USER

#define USER

namespace MS

{

class User:public Matr{

public:

User():Matr(){;};

 virtual int set4(int x,int y)

{

 

 if(x+3<n && y<m)

 {

  matr[x][y]=1;

  matr[x+1][y]=1;

  matr[x+2][y]=1;

  matr[x+3][y]=1;

  if(x!=0)

  {

   matr[x-1][y]=-1;

   if(y!=0)

    matr[x-1][y-1]=-1;

   if(y!=m-1)

    matr[x-1][y+1]=-1;

  }

  if(y!=0)

  {

   matr[x][y-1]=-1;

   matr[x+1][y-1]=-1;

   matr[x+2][y-1]=-1;

   matr[x+3][y-1]=-1;

  }

  if(y!=m-1)

  {

   matr[x][y+1]=-1;

   matr[x+1][y+1]=-1;

   matr[x+2][y+1]=-1;

   matr[x+3][y+1]=-1;

  }

  if(x!=n-4)

  {

   matr[x+4][y]=-1;

   if(y!=0)

    matr[x+4][y-1]=-1;

   if(y!=m-1)

   {

    matr[x+4][y+1]=-1;

   }

  }

  return 1;

 }

}

 virtual int set3(int x,int y)

{

 if(x+2<n && y<m)

 {

  if(matr[x][y]!=0 || matr[x+1][y]!=0 || matr[x+2][y]!=0)

  {

   return 0;

  }

  matr[x][y]=1;

  matr[x+1][y]=1;

  matr[x+2][y]=1;

   

  if(x!=0)

  {

   matr[x-1][y]=-1;

   if(y!=0)

    matr[x-1][y-1]=-1;

   if(y!=m-1)

    matr[x-1][y+1]=-1;

   }

   if(y!=0)

   {

    matr[x][y-1]=-1;

    matr[x+1][y-1]=-1;

    matr[x+2][y-1]=-1;

   }

   if(y!=m-1)

   {

    matr[x][y+1]=-1;

    matr[x+1][y+1]=-1;

    matr[x+2][y+1]=-1;

   }

   if(x!=n-3)

   {

    matr[x+3][y]=-1;

    if(y!=0)

     matr[x+3][y-1]=-1;

    if(y!=m-1)

    {

     matr[x+3][y+1]=-1;

    }

   }

   return 1;

 }

}

 virtual int set2(int x,int y)

{

    

  if(x+1<n && y<m)

  {

   if(matr[x][y]!=0 || matr[x+1][y]!=0)

    {

     return 0;

    }

    matr[x][y]=1;

    matr[x+1][y]=1;

    

    if(x!=0)

    {

     matr[x-1][y]=-1;

     if(y!=0)

      matr[x-1][y-1]=-1;

     if(y!=m-1)

      matr[x-1][y+1]=-1;

    }

    if(y!=0)

    {

     matr[x][y-1]=-1;

     matr[x+1][y-1]=-1;

    }

    if(y!=m-1)

    {

     matr[x][y+1]=-1;

     matr[x+1][y+1]=-1;

    }

    if(x!=n-2)

    {

     matr[x+2][y]=-1;

     if(y!=0)

      matr[x+2][y-1]=-1;

     if(y!=m-1)

     {

      matr[x+2][y+1]=-1;

     }

    }

    return 1;

  }

 }

 virtual int set1(int x,int y)

{

  if(x<n && y<m)

  {

   if(matr[x][y]!=0)

   {

    return 0;

   }

   matr[x][y]=1;

   

   if(x!=0)

   {

    matr[x-1][y]=-1;

    if(y!=0)

     matr[x-1][y-1]=-1;

    if(y!=m-1)

     matr[x-1][y+1]=-1;

   }

   if(y!=0)

   {

    matr[x][y-1]=-1;

    if(x!=n-1)

     matr[x+1][y-1]=-1;

   }

   if(y!=m-1)

   {

    matr[x][y+1]=-1;

    if(x!=n-1 && y!=0)

     matr[x+1][y+1]=-1;

   }

   if(x!=n-1)

   {

    matr[x+1][y]=-1;

    if(y!=0)

     matr[x+1][y-1]=-1;

    if(y!=m-1)

    {

     matr[x+1][y+1]=-1;

    }

   }

   return 1;

  }

}

 void prepare()

{

 for(int i=0;i<n;++i)

 {

  for(int j=0;j<n;++j)

  {

   if(matr[i][j]==-1)

    matr[i][j]=0;

  }

 }

}

 int getfire(int x,int y)

{

 if(matr[x][y]==0)

 {

  matr[x][y]=3;

  return 3;   

 }

 else if(matr[x][y]==1 || matr[x][y]==2)

 {

  if(matr[x][y]==1)

   --life;

  matr[x][y]=2;

  return 2;

 }

 else if(matr[x][y]==3)

 {

  return 4;

 }

}

 void set(int x,int y,int value)

{

 matr2[x][y]=value;

}

};

};

#endif

Класс пользователя Comp хранится в файле Comp.h

#include "cMatr.h"

#ifndef COMP

#define COMP

namespace Comp

{

 class Comp:public Matr{

 public:

 Comp():Matr(){;};

 virtual void set4()

{

 while(1)

 {

  unsigned int x;unsigned int y;

  srand(time(NULL));

  x=rand()%10;

  y=rand()%10;

  if(x+3<n && y<m)

  {

   matr[x][y]=1;

   matr[x+1][y]=1;

   matr[x+2][y]=1;

   matr[x+3][y]=1;

   if(x!=0)

   {

    matr[x-1][y]=-1;

    if(y!=0)

     matr[x-1][y-1]=-1;

    if(y!=m-1)

     matr[x-1][y+1]=-1;

   }

   if(y!=0)

   {

    matr[x][y-1]=-1;

    matr[x+1][y-1]=-1;

    matr[x+2][y-1]=-1;

    matr[x+3][y-1]=-1;

   }

   if(y!=m-1)

   {

    matr[x][y+1]=-1;

    matr[x+1][y+1]=-1;

    matr[x+2][y+1]=-1;

    matr[x+3][y+1]=-1;

   }

   if(x!=n-4)

   {

    matr[x+4][y]=-1;

    if(y!=0)

     matr[x+4][y-1]=-1;

    if(y!=m-1)

    {

     matr[x+4][y+1]=-1;

    }

   }

   break;

  }

 }

}

 virtual void set3()

{

 while(1)

 {

  unsigned int x;unsigned int y;

  srand(time(NULL));

  x=rand()%10;

  y=rand()%10;

  if(x+2<n && y<m)

  {

   if(matr[x][y]!=0 || matr[x+1][y]!=0 || matr[x+2][y]!=0)

   {

    continue;

   }

   matr[x][y]=1;

   matr[x+1][y]=1;

   matr[x+2][y]=1;

   

   if(x!=0)

   {

    matr[x-1][y]=-1;

    if(y!=0)

     matr[x-1][y-1]=-1;

    if(y!=m-1)

     matr[x-1][y+1]=-1;

   }

   if(y!=0)

   {

    matr[x][y-1]=-1;

    matr[x+1][y-1]=-1;

    matr[x+2][y-1]=-1;

   }

   if(y!=m-1)

   {

    matr[x][y+1]=-1;

    matr[x+1][y+1]=-1;

    matr[x+2][y+1]=-1;

   }

   if(x!=n-3)

   {

    matr[x+3][y]=-1;

    if(y!=0)

     matr[x+3][y-1]=-1;

    if(y!=m-1)

    {

     matr[x+3][y+1]=-1;

    }

   }

   break;

  }

 }

}

 virtual void set2()

{

 while(1)

 {

  unsigned int x;unsigned int y;

  srand(time(NULL));

  x=rand()%10;

  y=rand()%10;

  if(x+1<n && y<m)

  {

   if(matr[x][y]!=0 || matr[x+1][y]!=0)

    {

     continue;

    }

    matr[x][y]=1;

    matr[x+1][y]=1;

    

    if(x!=0)

    {

     matr[x-1][y]=-1;

     if(y!=0)

      matr[x-1][y-1]=-1;

     if(y!=m-1)

      matr[x-1][y+1]=-1;

    }

    if(y!=0)

    {

     matr[x][y-1]=-1;

     matr[x+1][y-1]=-1;

    }

    if(y!=m-1)

    {

     matr[x][y+1]=-1;

     matr[x+1][y+1]=-1;

    }

    if(x!=n-2)

    {

     matr[x+2][y]=-1;

     if(y!=0)

      matr[x+2][y-1]=-1;

     if(y!=m-1)

     {

      matr[x+2][y+1]=-1;

     }

    }

    break;

  }

 }

}

 virtual void set1()

{

 while(1)

 {

  unsigned int x;unsigned int y;

  srand(time(NULL));

  x=rand()%10;

  y=rand()%10;

  if(x<n && y<m)

  {

   if(matr[x][y]!=0)

   {

    continue;

   }

   matr[x][y]=1;

   

   if(x!=0)

   {

    matr[x-1][y]=-1;

    if(y!=0)

     matr[x-1][y-1]=-1;

    if(y!=m-1)

     matr[x-1][y+1]=-1;

   }

   if(y!=0)

   {

    matr[x][y-1]=-1;

    if(x!=n-1)

     matr[x+1][y-1]=-1;

   }

   if(y!=m-1)

   {

    matr[x][y+1]=-1;

    if(x!=n-1 && y!=0)

     matr[x+1][y+1]=-1;

   }

   if(x!=n-1)

   {

    matr[x+1][y]=-1;

    if(y!=0)

     matr[x+1][y-1]=-1;

    if(y!=m-1)

    {

     matr[x+1][y+1]=-1;

    }

   }

   break;

  }

 }

}

 void autoplacing()

 {

  setnull();

  set4();

  set3();

  set3();

  set2();

  set2();

  set2();

  set1();

  set1();

  set1();

  set1();

  ifready = true;

 };

 void prepare()

{

 for(int i=0;i<n;++i)

 {

  for(int j=0;j<n;++j)

  {

   if(matr[i][j]==-1)

    matr[i][j]=0;

  }

 }

}

 int getfire(int x,int y)

{

 if(matr[x][y]==0)

 {

  matr[x][y]=3;

  return 3;   

 }

 else if(matr[x][y]==1 || matr[x][y]==2)

 {

  if(matr[x][y]==1)

   --life;

  matr[x][y]=2;

  return 2;

 }

 if(matr[x][y]==3)

  return 3;

}

 void set(int x,int y,int value)

{

 matr2[x][y]=value;

}

 void fire(int &x,int &y)

{

 srand(time(NULL));

 x=rand()%10;

 y=rand()%10;

}

};

}

#endif

Функция рисования по Picturebox:

void ris()

{

Color ^col = gcnew Color();

Pen ^mybrysh = gcnew Pen(col->Yellow);

Graphics ^im = pictureBox1->CreateGraphics();

im->DrawLine(mybrysh,1,1,260,1);

im->DrawLine(mybrysh,1,26,260,26);

im->DrawLine(mybrysh,1,52,260,52);

 im->DrawLine(mybrysh,1,78,260,78);

im->DrawLine(mybrysh,1,104,260,104);

im->DrawLine(mybrysh,1,130,260,130);

im->DrawLine(mybrysh,1,156,260,156);

im->DrawLine(mybrysh,1,182,260,182);

im->DrawLine(mybrysh,1,208,260,208);

im->DrawLine(mybrysh,1,234,260,234);

im->DrawLine(mybrysh,1,260,260,260);

im->DrawLine(mybrysh,1,1,1,260);

im->DrawLine(mybrysh,26,1,26,260);

im->DrawLine(mybrysh,52,1,52,260);

im->DrawLine(mybrysh,78,1,78,260);

im->DrawLine(mybrysh,104,1,104,260);

im->DrawLine(mybrysh,130,1,130,260);

im->DrawLine(mybrysh,156,1,156,260);

im->DrawLine(mybrysh,182,1,182,260);

im->DrawLine(mybrysh,208,1,208,260);

im->DrawLine(mybrysh,234,1,234,260);

im->DrawLine(mybrysh,260,1,260,260);

 delete mybrysh;

 delete im;

  

Color ^col2 = gcnew Color();

Pen ^mybrysh2 = gcnew Pen(col->Yellow);

Graphics ^im2 = pictureBox2->CreateGraphics();

im2->DrawLine(mybrysh2,1,1,260,1);

im2->DrawLine(mybrysh2,1,26,260,26);

im2->DrawLine(mybrysh2,1,52,260,52);

im2->DrawLine(mybrysh2,1,78,260,78);

im2->DrawLine(mybrysh2,1,104,260,104);

im2->DrawLine(mybrysh2,1,130,260,130);

im2->DrawLine(mybrysh2,1,156,260,156);

im2->DrawLine(mybrysh2,1,182,260,182);

im2->DrawLine(mybrysh2,1,208,260,208);

im2->DrawLine(mybrysh2,1,234,260,234);

im2->DrawLine(mybrysh2,1,260,260,260);

 

im2->DrawLine(mybrysh2,1,1,1,260);

im2->DrawLine(mybrysh2,26,1,26,260);

im2->DrawLine(mybrysh2,52,1,52,260);

im2->DrawLine(mybrysh2,78,1,78,260);

im2->DrawLine(mybrysh2,104,1,104,260);

im2->DrawLine(mybrysh2,130,1,130,260);

im2->DrawLine(mybrysh2,156,1,156,260);

im2->DrawLine(mybrysh2,182,1,182,260);

im2->DrawLine(mybrysh2,208,1,208,260);

im2->DrawLine(mybrysh2,234,1,234,260);

im2->DrawLine(mybrysh2,260,1,260,260);

for(int x(0);x<10;++x)

 {

  for(int y(0);y<10;++y)

  {

   if(unit1.matr[x][y]==1)

   {

    Color ^col = gcnew Color();

    SolidBrush ^sq = gcnew SolidBrush(col->Black);

    Graphics ^im = pictureBox1->CreateGraphics();

    im->FillRectangle(sq,Rectangle(y*26+1,x*26+1,25,25));

    delete sq;

    delete im;

  }

  else if(unit1.matr[x][y]==2 && unit1.ifready==true)

  {

   Color ^col = gcnew Color();

   SolidBrush ^sq = gcnew SolidBrush(col->MistyRose);

   Graphics ^im = pictureBox1->CreateGraphics();

   im->FillRectangle(sq,Rectangle(y*26+1,x*26+1,25,25));

   delete sq;

   delete im;

  }

  else if(unit1.matr[x][y]==3 && unit1.ifready==true)

  {

    Color ^col = gcnew Color();

    SolidBrush ^sq = gcnew SolidBrush(col->LawnGreen);

    Graphics ^im = pictureBox1->CreateGraphics();

    im->FillRectangle(sq,Rectangle(y*26+10,x*26+10,10,10));

    delete sq;

    delete im;

   }

   else if(unit1.matr[x][y]==0)

   {

    Color ^col = gcnew Color();

    SolidBrush ^sq = gcnew SolidBrush(col->DarkBlue);

    Graphics ^im = pictureBox1->CreateGraphics();

    im->FillRectangle(sq,Rectangle(y*26+1,x*26+1,25,25));

    delete sq;

    delete im;

  }

  }

 }

  

for(int x(0);x<10;++x)

{

  for(int y(0);y<10;++y)

  {

  if(unit1.matr2[x][y]==1)

  {

   Color ^col = gcnew Color();

   SolidBrush ^sq = gcnew SolidBrush(col->Black);

   Graphics ^im = pictureBox2->CreateGraphics();

   im->FillRectangle(sq,Rectangle(y*26+1,x*26+1,25,25));

   delete sq;

   delete im;

       }

  else if(unit1.matr2[x][y]==0)

  {

    Color ^col = gcnew Color();

    SolidBrush ^sq = gcnew SolidBrush(col->DarkBlue);       Graphics ^im = pictureBox2->CreateGraphics();

    im->FillRectangle(sq,Rectangle(y*26+1,x*26+1,25,25));

    delete sq;

    delete im;

  }

  else if(unit1.matr2[x][y]==2 && unit1.ifready==true)

  {

   Color ^col = gcnew Color();

   SolidBrush ^sq = gcnew SolidBrush(col->MistyRose);       Graphics ^im = pictureBox2->CreateGraphics();

   im->FillRectangle(sq,Rectangle(y*26+1,x*26+1,25,25));

   delete sq;

   delete im;

  }

  else if(unit1.matr2[x][y]==3 && unit1.ifready==true)

  {

    Color ^col = gcnew Color();

    SolidBrush ^sq = gcnew SolidBrush(col->LawnGreen);

    Graphics ^im = pictureBox2->CreateGraphics();

    im->FillRectangle(sq,Rectangle(y*26+10,x*26+10,10,10));

    delete sq;

    delete im;

   }

  }

 }

 delete mybrysh2;

 delete im2;

}


 

А также другие работы, которые могут Вас заинтересовать

19037. Собственный магнитный момент. Уравнение Паули. Движение заряженной частицы в магнитном поле. Уровни Ландау 416.5 KB
  Лекция 19 Собственный магнитный момент. Уравнение Паули. Движение заряженной частицы в магнитном поле. Уровни Ландау Многие элементарные частицы в том числе и незаряженные имеют магнитный момент не связанный с ее движением в пространстве а связанный с внутренними ...
19038. Сложение моментов. Коэффициенты Клебша-Гордана 1.3 MB
  Лекция 20 Сложение моментов. Коэффициенты КлебшаГордана Поскольку в классической механике суммарный момент импульса системы из двух частиц равен векторной сумме моментов частиц квантовомеханический оператор суммарного момента двух частиц определяется как
19039. Примеры построения собственных функций оператора суммарного момента двух частиц. Сложение двух спинов ½. Классификация спиновых функций в системе из двух частиц 660.5 KB
  Лекция 21 Примеры построения собственных функций оператора суммарного момента двух частиц. Сложение двух спинов . Классификация спиновых функций в системе из двух частиц Покажем как вычисляются коэффициенты КлебшаГордана на нескольких примера. Пусть система из ду...
19040. Квазиклассическое приближение. Квазиклассические решения уравнения Шредингера, сшивка квазиклассических решений 664.5 KB
  Лекция 22 Квазиклассическое приближение. Квазиклассические решения уравнения Шредингера сшивка квазиклассических решений Число случаев когда удается точно решить стационарное уравнение Шредингера то есть найти собственные значения и собственные функции операт...
19041. Правило квантования Бора-Зоммерфельда. Примеры. Квазиклассический коэффициент прохождения через барьер. Вероятность альфа распада в квазиклассическом приближении 384.5 KB
  Лекция 23 Правило квантования БораЗоммерфельда. Примеры. Квазиклассический коэффициент прохождения через барьер. Вероятность альфа распада в квазиклассическом приближении Квазиклассические решения и условия их сшивки в точках поворота позволяют получить в кв...
19042. Уравнение Томаса-Ферми 127 KB
  Лекция 24 Уравнение ТомасаФерми Распределение заряда и электрического поля в атомах с учетом взаимодействия электронов друг с другом проводятся методами самосогласованного поля. Эти расчеты очень сложны и громоздки особенно многоэлектронных атомов. Но как раз дл
19043. Теория стационарных возмущений для состояний дискретного спектра. Случай невырожденного спектра 279 KB
  Лекция 25 Теория стационарных возмущений для состояний дискретного спектра. Случай невырожденного спектра Точное решение стационарного уравнения Шредингера как правило представляет собой существенную математическую проблему и возможно только для простейших кв...
19044. Теория стационарных возмущений в случае невырожденного спектра: примеры 309 KB
  Лекция 26 Теория стационарных возмущений в случае невырожденного спектра: примеры Рассмотрим несколько примеров. Пусть на одномерный гармонический осциллятор наложено возмущение . Найдем поправки первого и второго порядка к энергетическим уровням осциллятора. ...
19045. Теория стационарных возмущений для состояний дискретного спектра. Случай вырож-денного спектра 269.5 KB
  Лекция 27 Теория стационарных возмущений для состояний дискретного спектра. Случай вырожденного спектра Рассмотрим теперь случай когда невозмущенный оператор Гамильтона имеет вырожденные собственные значения. Пусть функции ... отвечают одному и тому же собст...