People Soft Понедельник, 29.04.2024, 12:24
Меню сайта
Категории каталога
Blitz3D [3]
Delphi [0]
Pascal [5]
Главная » Статьи » Pascal

Pascal для начинающих. Массивы

Как я и обещал будем говорить о массивах!

  

Объясню что такое массив на конкретном примере:

Вы пишете игру в морской бой.

Как известно по правилам игры есть два поля 10х10

Тоесть чтобы написать такую игру нужно объявить 200 переменных на каждое поле!!!

Для того чтобы сделать это без труда можно взять массив.

Объявляется он как почти как переменная только вместо типа нужно написать

:array [размер_массива] of тип_массива

  

Например, чтобы объявить два поля морского боя можно написать:

  

var

pole1,pole2:array [1..100] of integer;

  

И мы получим то что нужно!

Для упрощения работы с массивом можно создать многомерный массив.

Его размер определяется по формуле размер1*размер2*...

Определение почти такое же

:array [размер1,размер2,..] of тип_массива

То же поле для морского боя можно написать по другому:

  

var

pole1,pole2:array [1..10,1..10] of integer;

  

Размерность его точно та же, а работать с ним при написании морского боя удобнее!

Сейчас мы не будем писать морской бой, но вместо этого напишем крестики-нолики!

План:

Создаем массив на 9 переменных(pole).

В нем будем учитывать что 0-пусто,1-крестик,2-нолик

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

  

Program game;

var

pole:array [1..9] of integer; {Объявляем нужные переменные}

a,hod,player,win,smenahoda:integer;

begin

player:=1; {Начинает крестик}

smenahoda:=0; {Ход сменяется}

win:=0; {Еще никто не победил}

for a:=1 to 9 do pole[a]:=0; {Обнуляем массив}

Repeat {Повторяем цикл до тех пор, пока кто-то не победит}

if player=1 then writeln('Ход за крестиком') else writeln('Ход за ноликом'); {Выводим чей ход}

Writeln(pole[1],pole[2],pole[3]); {Выводим поле на экран}

Writeln(pole[4],pole[5],pole[6]);

Writeln(pole[7],pole[8],pole[9]);

Readln(hod); {Спрашиваем ход}

if pole[hod]<>0 then writeln('Клетка занята!'); {Если клетка занята...}

if pole[hod]=0 then {Если клетка не занята...}

begin

 

smenahoda:=0; {Ход будет сменен}

pole[hod]:=player;

 

if (pole[1]=1) and (pole[2]=1) and (pole[3]=1)  {Проверка выйгрыша крестика}

or (pole[4]=1) and (pole[5]=1) and (pole[6]=1)

or (pole[7]=1) and (pole[8]=1) and (pole[9]=1)

or (pole[1]=1) and (pole[5]=1) and (pole[9]=1)

or (pole[3]=1) and (pole[5]=1) and (pole[7]=1)

or (pole[1]=1) and (pole[4]=1) and (pole[7]=1)

or (pole[2]=1) and (pole[5]=1) and (pole[8]=1)

or (pole[9]=1) and (pole[6]=1) and (pole[9]=1) then win:=1;

 

if (pole[1]=2) and (pole[2]=2) and (pole[3]=2)  {Проверка выйгрыша нолика}

or (pole[4]=2) and (pole[5]=2) and (pole[6]=2)

or (pole[7]=2) and (pole[8]=2) and (pole[9]=2)

or (pole[1]=2) and (pole[5]=2) and (pole[9]=2)

or (pole[3]=2) and (pole[5]=2) and (pole[7]=2)

or (pole[1]=2) and (pole[4]=2) and (pole[7]=2)

or (pole[2]=2) and (pole[5]=2) and (pole[8]=2)

or (pole[9]=2) and (pole[6]=2) and (pole[9]=2) then win:=2;

 

if (player=1) and (smenahoda=0) then

begin

player:=2;

smenahoda:=1;

end;

 

if (player=2) and (smenahoda=0) then

begin

player:=1;

smenahoda:=1;

end;

 

end;

 

Until win=0;

 

if win=1 then writeln('Победил крестик!') else writeln('Победил нолик!'); {Выводим результат}

end.

 

Вот и все! Вопросы по коду оставляйте в комментариях!

А мы подошли к работе с файлами!

 

Категория: Pascal | Добавил: Pupkin (18.11.2007) | Автор: Pupkin
Просмотров: 644 | Комментарии: 2 | Рейтинг: 0.0/0 |
Всего комментариев: 2
2 ivak  
0
я сейчас пишу крестики нолики в делфи. скоро выложу, заценишь !!

1 Pupkin  
0
Я понимаю что код не маленький!
Комментарии типа "ниче себе код" будут не уместны!

Имя *:
Email *:
Код *:
Форма входа
Поиск
Статистика

    html counter счетчик посетителей сайта


    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Заделано студией People Soft © 2024