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

 // Программа

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.


Информация о работе «Разработка приложения для Windows, моделирующего игру "Нечетный" и "Четный"»
Раздел: Информатика, программирование
Количество знаков с пробелами: 16146
Количество таблиц: 2
Количество изображений: 10

Похожие работы

Скачать
130405
7
0

... AVR Studio запомнит расположение окон и использует эти установки при следующем запуске проекта. 3.2. Анализ методики реализации разработки программного обеспечения 3.2.1. Классификация вариантов заданий Цель заданий – практическое освоение методики программирования на ассемблере микроконтроллеров ATMEL семейства AVR, отладка программы на симуляторе AVR Studio и программирование кристалла с помощью ...

Скачать
344008
16
23

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

Скачать
95091
3
6

... каждый раз, когда берет блокнот в руки. Таким образом, рекламный блокнот - это не только средство для занесения заметок, но и долгосрочная реклама. 2.3      Техника изготовления и подготовки многополосных изданий к печати   Типы электронных носителей, принимаемых в производство - Компакт-диски CD-R ,CD-RW, DVD-R, DVD-RW (стандарт ISO9660) - Устройства, подключаемые через USB, вместе с ...

Скачать
71797
2
13

... средних и крупных государственных и коммерческих организаций постепенно отказываются от использования только ПК, задачей сегодняшнего дня - создание открытых и распределенных информационных систем. На сегодняшний день развитие информационных технологий - создание единых сетей предприятий и корпораций, объединяющих удаленные компьютеры и локальные сети, часто использующие разные платформы, в ...

0 комментариев


Наверх