:: Меню ::

Головна
Передмова
СЕРЕДОВИЩЕ РОЗРОБКИ C++ BUILDER
Початок роботи
Перший проект
ПРАКТИКУМ ПРОГРАМУВАННЯ
Графіка
Мультимедіа
Бази даних
Компонент програміста
Консольне застосування
Довідкова система
Створення настановного диска
Приклади програм
C++ Builder — короткий довідник
Книга для гостей
Контакти
Добавити у вибране

:: Друзі ::

 
Перечислим лишь несколько основных причин для того, чтобы смотать пробег в Саратове: Процедура эта весьма сложная, специфическая и требует как опыта специалиста, так и наличия специального оборудования. К счастью, читая эти строки, вы на верном пути — коррекция пробега в Саратове на любых типах авто, мотоциклов и снегоходов является одной из услуг нашей компании, делом, в котором мы можем гарантировать неизменно высокий результат. Когда необходимо смотать пробег в Саратове.

:: Лічильники ::

=

 

 

 

 

 

Початок гри



На початку гри треба розставити міни і для кожної клітки поля підрахувати, скільки мін знаходиться в сусідніх клітках. Функція Newgame (її текст прі-, веден в лістингу 10.3)вирішує цю задачу.

 Лістинг 10.3. Функція Newgame

// нова гра — генерує нове поле
void __fastcall Newgame()
{
// Очистимо елементи масиву, відповідні що відображається
// кліткам, а в тих, що не відображаються, по межі ігрового поля
// запишемо число -3. Унікальне значення кліток межі
// використовується функцією Open для завершення рекурсивного
// процесу відкриття сусідніх порожніх кліток.
int row,col;
for (row=0; row <= Mr+1; row++)
for (col=0; col <= Mc+1; col++)
Pole[row][col] = -3; for (row=l; row <= MR; row++)
for (col=l; col <= МС; col++) Pole[row][col] = 0;
// розставимо міни
time_t t;   
// використовується генератором випадкових чисел (ГСЧ)
srand((unsigned) time(&t)); // ініціалізація ГСЧ
int n = 0; // кількість мін
do
{
row = rand() % MR +1; col = rando % МС +1;
  if ( Pole [row] [col]!= 9)
 {
Pole[row][col] = 9; n++; } } while ( n < 10);
// обчислення кількості мін в сусідніх клітках
int до;
for ( row = 1; row <= MR; row++)
for ( col = 1; col <= МС; col++)
if ( Pole[row][col]!= 9) { до =0;
if ( Pole[row-1][col-1] == 9) k++;
if ( Pole[row-1][col] == 9) k++;
 if ( Pole[row-1][col+1] == 9) k++;
if ( Pole[row][col-1] = 9) k++;
if ( Pole[row][col+1] == 9) k++;
if ( Pole[row+1][col-1] = 9) k++;
 if ( Pole[row+1][col] == 9) k++;
 if ( Pole[row+1][col+1] == 9) k++;
 Pole[row][col] = до;
 }
status =0; // початок гри nmin =0;
 // немає виявлених мін nflag =0; // немає прапорів }

Після того, як функція Newgame розставить міни, функція showpole (її текст приведений в лістингу 10.4) виводить зображення ігрового поля.

Лістинг 10.4. Функція Showpole

// показує поле
void __fastcall Tforml::showpole(  int status)
{
for ( int row =1; row <= MR; row++)
for ( int col = 1; col <= МС; col++)
Kletka(row, col, status); }

Функція Showpole виводить зображення поля послідовно, клітка за кліткою. Виведення зображення окремої клітки виконує функція Kletka її текст приведений в лістингу 10.5. Функція Kletka використовується для виведення зображення поля на початку гри, під час гри і в її кінці. На початку гри (значення параметра status дорівнює нулю) функція виводить тільки контур клітки, під час гри — кількість мін в сусідніх клітках або прапорець, а в кінці вона відображає початковий стан клітки і дії користувача. Інформацію про фазу гри функція Kletka отримує через параметр status .

Лістинг 10.5. Функція Kletka

// малює на екрані клітку
void __fastcall Tforml::kletka(int row, int col, int status)
{
int x = LEFT + (col-1)* W;
int у = TOP + (row-1)* H;
if (status == 0) // початок гри (
// клітка — сірий квадрат
Canvas->brush->color = clltgray;
Canvas->rectangle (х-1, у-1, x+w, у+н) ;
return; }
// у час   (status =   1)  - і в 
кінці   (status = 2)  гри
 if   (   Pole[row][col]  <  100)
{
// клітка не відкрита
Canvas->brush->color = clltgray;
  // не відкриті — сірі
Canvas->rectangle(х-1,у-1,x+w,у+н);
if (status == 2 && Pole.frow] [col] == 9)
Mina( x, у); // гра закінчена, показати міну
return; }
// клітка відкрита
Canvas->brush->color = clwhite;     
// відкриті білі
Canvas->rectangle(x-l,y-l,x+w,y+h);
if  ( Pole[row][col] == 100) return; // клітка порожня
if ( Pole[row][col] >= 101 && 
Pole[row][col] <= 108) {
Canvas->font->size = 14;
Canvas->font->color = clblue;
 Canvas->textouta(x+3,y+2,inttostr(Pole[row][col]-100));
return; }
if ( Pole[row][col] >=  200) Flag(x, у);
if (Pole[row][col] == 109) 
// на цій міні підірвалися!
 {
Canvas->brush->color = clred;
 Canvas->rectangle(x,y,x+w,y+h);
} if 
 ((  Pole[row][col]% 10 = 9)  && (status = 2))
Mina( x,   у); }
 



x

:: Наша кнопка ::

Отримати код:

Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


:: Реклама ::


:: Посилання ::

-


 

 

 


Copyright by Zvircom © 2009