Разработка рабочего проекта




 

Разработка программы

 

Программа, моделирующая игру «Нечет» и «Чет» разработана на языке Object Pascal в визуальной среде Delphi 6. Проект содержит одно окно-Form1.

 

Компонент 1 Form1

 

Свойства:

Caption=’Игра Чет Нечет’

Menu=MainMenu1

Color=clGradientActiveCaption

Событие=MainMenu1

End

Компонент 2-MainMenu1.

Свойства:

object MainMenu1: TMainMenu

Left = 14

Top = 184

object N1: TMenuItem

Caption = ‘Игра’

object N2: TMenuItem

Caption = ‘Новая игра’

OnClick = N2Click

end

object N3: TMenuItem

Caption = ‘Выход’

OnClick = N3Click

end

end

object N4: TMenuItem

Caption = ‘Настройка’

object N6: TMenuItem

Caption = ‘Второй игрок’

object N7: TMenuItem

Caption = ‘Компьютер’

end

end

end

object N5: TMenuItem

Caption = ‘Справка’

object N8: TMenuItem

Caption = ‘Правила игры’

OnClick = N8Click

end

object N9: TMenuItem

Caption = 'о программе '

OnClick = N9Click

end

end

end

Компонент 3 – TstringGrid.

Свойства:

object StringGrid2: TStringGrid

Left = 86

Top = 48

Width = 249

Height = 153

ColCount = 6

DefaultColWidth = 40

FixedCols = 0

RowCount = 6

FixedRows = 0

TabOrder = 3

Visible = False

end

Компонент 4 – TEdit

Свойства;

object Edit1: TEdit

Left = 0

Top = 208

Width = 377

Height = 28

Font. Charset = DEFAULT_CHARSET

Font. Color = clOlive

Font. Height = -16

Font. Name = 'MS Sans Serif'

Font. Style = [fsBold]

ParentFont = False

TabOrder = 2

end

Компонент 5-Tbutton.

Свойства:

object Button1: TButton

Left = 88

Top = 233

Width = 250

Height = 33

Caption = Показать

Font. Charset = DEFAULT_CHARSET

Font. Color = clNavy

Font. Height = -16

Font. Name = 'MS Sans Serif'

Font. Style = []

ParentFont = False

TabOrder = 1

OnClick = Button1Click

End

 

Написание программы

 

Программа написана в среде программирования Delphi6. Основной компонент – игральное поле StringGrid1. В моем проекте прграммы 1- игрок – пользователь, 2- игрок – компьютер. Для компьютера в данном проекте не предусмотрена выигрышная стратегия. Компьютер ставит числа в случайно выбранную свободную позицию с помощью функции случайных чисел.

Выигрышную стратегию можно построить предусматривая вариант максимального количества ставки числа 1. Для этого функцию случайных чисел для компьютера напишем как random(1)+1;


Спецификация программы

 

Загрузочный файл программы – Project1.exe.

 

Табл. 1. Спецификация программы

Наименование Обозначения Примечание  
Project1.dpr Файл проекта Связывает все файлы, из которых состоит приложение
Project1.cfg Файл конфигурации  
Project1.dof Файл параметров проекта Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы  
Project1.dfm Файл формы №1 Содержит список свойств всех компонентов, включенных в форму №1
Unit1.pas Файл программного модуля для формы №1 Определят функциональность формы №1
Unit1.dcu Объектный файл для Unit1.pas Откомпилированная версия Unit1.pas

 

Текст программы

 

// Программа

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, Grids, StdCtrls, Menus;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Button1: TButton;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N5: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

Edit1: TEdit;

StringGrid2: TStringGrid;

procedure StringGrid1MouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure N2Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N8Click (Sender: TObject);

procedure N9Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var {Глобальные переменные}

Form1: TForm1;

q1, w1, q2, w2:array [0..6] of integer;

i, j, chet, nechet:integer;

implementation

{$R *.dfm}

// главная процедура, где вставляеются единицы и нули в позиции игроков

procedure TForm1. StringGrid1MouseDown (Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

label 1,2;

var nk, z1, z2, a, b, k, l:integer;

begin

//StringGrid1 Поле игроков размещена

// StringGrid2 используется для фиксирования позиции игроков

randomize; {генератор случайных чисел}

nk:=stringgrid1. RowCount; {фиксируется количество строк (столбцов тоже).}

k:=stringgrid1. DefaultColWidth; {фиксируется ширина столбцов таблицы}

l:=stringgrid1. DefaultRowHeight; {фиксируется высота строк}

stringgrid1. Font. Color:=clblue;

z1:=trunc (x/k); z2:=trunc (y/l); {фикситруются координаты указателя мышки}

// Если позиция занята, то переход к на новый ход

if (stringgrid1. Cells [z1, z2]='1') or

(stringgrid1. Cells [z1, z2]='0') then goto 1

// иначе с помощью функций случайных чисел ставится 0 или 1

else begin stringgrid2. Cells [z1, z2]:='*';

stringgrid1. Cells [z1, z2]:=inttostr (random(2));

end;

// моделирование хода компьютера

// компьютер позицию занимает случайными числами в интервале от 0 до nk

// nk-количество строк

2: a:=random(nk);

b:=random(nk);

// Если позиция свободна ставит 0 или 1

// Иначе переход на другую позицию

if (stringgrid1. Cells [a, b]<>'1') and

(stringgrid1. Cells [a, b]<>'0') then begin

stringgrid2. Cells [a, b]:='@';

stringgrid1. Cells [a, b]:=inttostr (random(2)) end

else goto 2;

1: end;

// процедура Новая игра

// Очищаются все позиции поля

procedure TForm1.N2Click (Sender: TObject);

begin

for i:=0 to stringgrid1. RowCount-1 do

for j:=0 to stringgrid1. RowCount-1 do

begin

stringgrid1. Cells [i, j]:='';

end;

edit1.text:=''; {Результат обнуляется}

end;

// Процедура завершения, отвечает на кнопку из меню

procedure TForm1.N3Click (Sender: TObject);

begin

showmessage('Досвидания');

form1. Close;

end;

// Процедура выводит сообщение о правиле игры

procedure TForm1.N8Click (Sender: TObject);

begin

showmessage ('Два игрока, «нечетный» и «Четный», по очереди ставят'+#13+

' единицы и нули в незанятые позиции поля N x N'+#13+

'Каждый из игроков может ставить 1 или 0 в произольную'+#13+

' свободную позицию, тем самым занимая ее.'+#13+

' Игра продолжается до заполнения всех позиций.'+#13+

'После этого суммируются числа вдоль каждой строки'+#13+

' и каждого столбца и главных диагоналей. '+

#13+'Число ODD нечетных сумм сравнивается с числом четных сумм EVEN.'+#13+

'Если ODD>Even, то выигрывает, если EVEN>ODD выигрывает четный.'+#13+

'Если ODD=EVEN, результата считается ничейным');

end;

// Процедура выводит сообщение о программе

procedure TForm1.N9Click (Sender: TObject);

begin

showmessage ('Программу разработал студент группы \УЗИН-709–01 КРУ г. Астана'+

#13+'Захарченко Егор'+

#13+'Программа написана для игры пользователя с компьютером'+

#13+'размерность поля – 6х6.'+#13+

'Выигрышную стратегию для компьютера можно '+#13+

'построить с помощью датчика случайных чисел random(1)+1'+#13+

'тем самым вставляя в позицию только единицы'+#13+

'или присваивая к позиции компьютера только единицы'+#13+

'Но в данной программе пользователь и компьютер играет'+

#13+' на равных правилах');

end;

// StringGrid2 используется для фиксирования позиции игроков

procedure TForm1. Button1Click (Sender: TObject);

label 1;

begin

nechet:=0;

chet:=0;

for i:=0 to 5 do

for j:=0 to 5 do

if (stringgrid2. Cells [i, j]<>'*') and (stringgrid2. Cells [i, j]<>'@') then

begin showmessage ('Не все позиции заняты, '+#13+

'продолжайте заполнять поля'); goto 1;

end;

// В этом цикле определяются позиции игроков

// соответственные числа по строкам и по столбцам суммируются

for i:=0 to 5 do

for j:=0 to 5 do

if stringGrid1. Cells [i, j]='1' then begin

if stringgrid2. Cells [i, j]='*' then nechet:=nechet+1

else chet:=chet+1 end;

for j:=0 to 5 do

for i:=0 to 5 do

if stringGrid1. Cells [i, j]='1' then begin

if stringgrid2. Cells [i, j]='*' then nechet:=nechet+1

else chet:=chet+1 end;

// Числа суммируются по главным диагоналям

for j:=0 to 5 do

if stringgrid1. Cells [j, j]='1' then begin

if stringgrid2. Cells [j, j]='*' then nechet:=nechet+1

else chet:=chet+1 end;

for j:=0 to 5 do

if stringgrid1. Cells [j, j]='1' then begin

if stringgrid2. Cells [j, j]='*' then nechet:=nechet+1

else chet:=chet+1 end;

// Определяется победитель

if chet=nechet Then Edit1. Text:='Ничья, число'+inttostr(chet)

else begin

if nechet>chet then edit1.text:='Выиграл Нечет(пользователь), число '+inttostr(nechet)

else

edit1.text:='Выиграл Чет(компьютер), число '+inttostr(chet);

end;

1: end;

end.

 

Описание программы

 

Требуется компьютер, который поддерживает операционную систему Windows9x. Технические характеристики такого компьютера должны составлять: Pentium 100 и выше; объем оперативной памяти не менее 16 Мб; жесткий диск не менее 500 МБ. Дополнительные устройства для программы не требуются.

Программа управляется через главное меню. Через меню можно начать новую игру, закрыть игру, прочитать справки о программе, о разработчике. Числа игрока ставятся в позиции, соответственно указателю мышки. Компьютер выбирает из свободных позиции свою позицию и ставит число 0 или 1. Результат игры показывается при нажатии на кнопку «Показать». Если заполнены не все позиции, выдается соответствующее сообщение. Если заполнены все позиции, определяется выигравший и его число.

Программа загружается нажатием на загрузочный файл Project1.exe.

Входные данные: 0 или 1 в поле StringGrid1.

Выходные данные: сумма чисел игроков и сообщение о выигравшем игроке отображаются в поле TEdit.

 


Рис. 1. Тестирование -1

 

Рис. 1. Тестирование -2

 

Рис. 1. Тестирование -3


Рис. 1. Тестирование -4

 

Рис. 1. Тестирование -5

 

Рис. 1. Тестирование -6

 


Рис. 1. Тестирование -7

 

В таблице (таб. 2.) представлены результаты тестирования:

 

Таблица 1. Результаты тестирования

Выиграл Число
Нечет  
Чет  
Чет  
Нечет  
Нечет  
Нечет  
Ничья  

 

Внедрение

 

Данное приложение разработанное в Delphi, способно работать на персональных компьютерах с минимальными требованиями:

Процессор – Pentium 400 MHz.,

Оперативная память – 512 Mb,

Жесткий диск – 10 Gb,

Операционная система – Windows XP Professional

Программное обеспечение – Borland Database Engine.

Запустить приложение можно также как и любое другое с дискеты или с другого носителя.

Для управления программой используются кнопки меню. Выход из программы осуществляется по команде Файл-> Выход в главном меню или щелчку левой кнопкой мыши по крестику в правом верхнем углу экрана.

Сообщения оператору рисунки 8–10:

Сообщение когда не заполнены все клетки поля Рисунок 8.

 

Рис. 8. Сообщение игроку

 

Сообщение об условий игры открывается по команде Справка->Правила игры-Рисунок 9.

 

Рис. 9. Условие игры

 

Сообщение о разработчике открывается по команде Справка->о программе – Рисунок 10.

 

 


Рис. 10. Сообщение о разработчике

 

 




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-10-17 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: