Разработка игры морской бой

Автор работы: Пользователь скрыл имя, 07 Ноября 2011 в 21:04, курсовая работа

Описание

В нашей курсовой работе представлены игры «Морской бой» и «Автоматический видео-покер». Данные программы предназначены для домашнего использования как время проведения досуга. Программы распространяються по принципу «freeware».

Содержание

Введение ................................................................................................................. 3

1. Общий раздел ………………………………………………............................. 4

1.1. Цель разработки …………….………………………………….................... 4

1.2. Характеристика используемых при работе аппаратно-программных средств .................................................................................................................... 4

1.3. Обоснование выбора среды программирования ......................................... 9

2. Специальный раздел ........................................................................................ 11

2.1. Постановка задачи ........................................................................................ 11

2.2. Анализ входной и выходной информации …............................................. 12

3. Технологический раздел ................................................................................. 13

3.1. Описание алгоритма ..................................................................................... 13

3.1.1. Описание алгоритма магазина «UniversalShop» ................................... 13

3.2. Описание программы «UniversalShop»..................................................... 14

3.3. Описание процесса отладки программы .................................................... 25

3.4. Анализ результатов решения задачи……………………………………..

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

Заключение

Приложение 1 Исходный код программы

Работа состоит из  1 файл

Морской бой.doc

— 325.00 Кб (Скачать документ)

if BoP = 'p' then begin

  for i := 1 to 4 do set_ships[i] := true; //все стоить

  paluba := 0;

  ChangePopUpMenu;

  FormMain.PlayButton.Enabled := true; //можно играть

  if FormConf.PlayCheckBox.Checked then FormMain.Play;

end;

end;

//дождались ...

procedure TFormMain.Play;

begin

game := 1;

with FormMain do begin

   StatusGroupBox.Caption := ' Статус: игра ';

   StatusLabel.Caption := 'Игрок';

   ManKillLabel.Caption := 'Убил:';

   ManLostLabel.Caption := 'Потерял:';

   //нажать  уже низя

   RanSetShipsButton.Enabled := false;

   RotateButton.Enabled := false;

   DelButton.Enabled := false;

   PlayButton.Enabled := false;

   DiffComboBox.Enabled := false;

  end;

RandomSetShips( 'b' ); //теперь  бот корабли ставит

 

if ( FormNapalm.cht ) then FormMain.ReDraw( 'b' );

end;

procedure TFormMain.SetShip( StartTag:integer; FinishTag:integer; BoP:char );

begin

if FormConf.SetCheckBox.Checked then

  sndPlaySound( 'sounds\SetShip.wav', SND_ASYNC );

WriteSmallMatrix( StartTag, FinishTag, paluba, BoP );

 set_ships[paluba] := true;

paluba := GetPaluba;

ChangePopUpMenu;

if ( FormConf.PlayCheckBox.Checked ) and ( paluba = 0 ) then Play

else

  if paluba = 0 then FormMain.PlayButton.Enabled := true; //можно играть

end;

procedure TFormMain.NewGame;

var i:integer;

begin

ClearAll;

with FormMain do begin

  StatusGroupBox.Caption := ' Статус: расстановка ';

  StatusLabel.Caption := 'Сейчас ставим:';

  ManKillLabel.Caption := '1 - палубный';

  ManLostLabel.Caption := '';

  PlayButton.Enabled := false;

  RotateButton.Enabled := true;

  DelButton.Enabled := true;

  RanSetShipsButton.Enabled := true;

  DiffComboBox.Enabled := true;

  FormNapalm.cht := false; //чит

  StepsMemo.Clear;

end;

game := 0; //ставим  корабли (играть низя)

paluba := 1;

zalez := false;

e_k_ships := 0;

m_k_ships := 0;

for i := 1 to 4 do set_ships[i] := false;

 ChangePopUpMenu;

end;

procedure ClearCount;

begin

cnt[0] := 0; cnt[1] := 0; //счет 0-0

FormMain.CountLabel.Caption := 'Счет: 0 - 0 ( 0 )';

end;

procedure TFormMain.FormShow(Sender: TObject);

begin

SetTags; //раздаем  таги всем шейпам

NewGame; //дефултовые  параметры

end;

procedure TFormMain.FormCreate(Sender: TObject);

var Reg:TRegistry;

begin

path := ExtractFilePath( Application.ExeName );

 Caption := Application.Title;

Reg := TRegistry.Create;

 Reg.RootKey := HKEY_CURRENT_USER;

if Reg.KeyExists( 'sf' ) = false then begin

  Reg.OpenKey( 'sf', true );

  Reg.WriteInteger( '_left', Left );

  Reg.WriteInteger( '_top', Top );

end

else Reg.OpenKeyReadOnly( 'sf' );

Left := Reg.ReadInteger( '_left' );

Top := Reg.ReadInteger( '_top' );

Reg.Free;

RanSetShipsButton.Caption := 'В случайном'#13'порядке';

alph := 'абвгдежз'; //для записи ходов

ClearCount;

end;

procedure TFormMain.Shape1MouseUp(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

var j:integer;

begin

if ( game = 0 ) or ( game = 2 ) then Exit;

  j := 0;

if Fire( (Sender as TShape).Tag, 'p' ) = 1 then

  while ( j < 1 ) do

   if Fire( BotFireTag, 'b' ) = 1 then j := 2;

end;

procedure TFormMain.Shape65MouseMove(Sender: TObject; Shift: TShiftState;

  X, Y: Integer);

var tag_s, tag_f:integer;

begin

if game <> 0 then exit;

ReDraw( 'p' );

tag_s := (Sender as TShape).Tag;

 tag_f := GetFinishTag( tag_s, paluba, rotate );

DrawShip( tag_s, tag_f, rotate );

end;

procedure TFormMain.Shape65MouseUp(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

var s, f:integer;

begin

if paluba = 0 then Exit;

s := (Sender as TShape).Tag;

 f := GetFinishTag( s, paluba, rotate );

if (Sender as TShape).Brush.Color <> clRed then SetShip( s, f, 'p' );

end;

procedure TFormMain.N2Click(Sender: TObject);

var p:integer;

begin

if (Sender as TMenuItem).Tag = -1 then exit; //атменка

p := StrToInt( (Sender as TMenuItem).Caption[1] ); //берем "палубность" корабля

 if FormConf.DelShipCheckBox.Checked then begin

  if MesBox( 'Вы  точно хотите удалить ' + (Sender as TMenuItem).Caption +

             ' корабль ?', 'Удаление корабля' ) = true

   then DelShip( p )

   else Exit;

  Exit;

end;

DelShip( p ); 

end;

procedure TFormMain.PlayButtonClick(Sender: TObject);

begin

case (Sender as TSpeedButton).Tag of

  0: Play;

  1: if rotate then rotate := false else rotate := true;

  2: DeleteShipPopupMenu.Popup( FormMain.Left + DelButton.Left + 2, FormMain.Top + DelButton.Top + 74 );

  3: begin //рандом

      RandomSetShips( 'p' );

      ReDraw( 'p' );

     end;

end;

end;

procedure TFormMain.N9Click(Sender: TObject);

begin

case (Sender as TMenuItem).Tag of

  11: begin

       if FormConf.NewGameCheckBox.Checked then begin

        if MesBox( 'Создать новую игру ?', 'Новая  игра' ) = true

         then NewGame

         else Exit;

        Exit;

       end;

       NewGame;

      end;

  12: FormConf.ShowModal;

  13: begin

       if FormConf.ExitCheckBox.Checked then begin

        if MesBox( 'Вы точно хотите выйти  ?', 'Выход' ) = true

        then Close

        else Exit;

        Exit;

       end;

       Close;

      end;

  14: if game <> 2 then ShowMessage( 'Текущая игра должна  быть закончена' )

      else FormHTML.ShowModal;

  15: begin

       FormMain.NewGame;

       ClearCount;

      end;

  21: if paluba = 0 then FormSaveSheme.ShowModal

      else ShowMessage( 'Все корабли должны  быть поставлены' );

  22: FormLoadDelSheme.ShowModal;

  23: FormCleaner.ShowModal;

  31: FormHistory.ShowModal;

  32: ShowMessage('Инфу  о найденых ошибках,'#13'лагах, багах,'#13 +

                      'можете слать сюда:'

           + #13#13 + 'kulbes@mail.ru');

end;

end;

procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);

var Reg:TRegistry;

begin

Reg := TRegistry.Create;

Reg.RootKey := HKEY_CURRENT_USER;

 Reg.OpenKey( 'sf', true );

Reg.WriteInteger( '_left', Left );

Reg.CloseKey;

Reg.OpenKey( 'sf', true );

Reg.WriteInteger( '_top', Top );

Reg.CloseKey;

end;

procedure TFormMain.KillShapeMouseUp(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

begin

FormNapalm.ShowModal;

end;

end.

Информация о работе Разработка игры морской бой