Автор работы: Пользователь скрыл имя, 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 Исходный код программы
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(
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(
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(
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.
if MesBox( 'Вы точно хотите удалить ' + (Sender as TMenuItem).Caption +
' корабль ?', 'Удаление корабля' ) = true
then DelShip( p )
else Exit;
Exit;
end;
DelShip( p );
end;
procedure TFormMain.PlayButtonClick(
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.
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(
Shift: TShiftState; X, Y: Integer);
begin
FormNapalm.ShowModal;
end;
end.