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.
... AVR Studio запомнит расположение окон и использует эти установки при следующем запуске проекта. 3.2. Анализ методики реализации разработки программного обеспечения 3.2.1. Классификация вариантов заданий Цель заданий – практическое освоение методики программирования на ассемблере микроконтроллеров ATMEL семейства AVR, отладка программы на симуляторе AVR Studio и программирование кристалла с помощью ...
... назначение, содержание и описание функциональных характеристик, субхарактеристик и атрибутов, определяющих специфические особенности целей, задач, свойств и сферы применения конкретного программного средства – его функциональную пригодность; · конструктивные характеристики качества, способствующие улучшению и совершенствованию назначения, функций и возможностей применения ПС; ...
... каждый раз, когда берет блокнот в руки. Таким образом, рекламный блокнот - это не только средство для занесения заметок, но и долгосрочная реклама. 2.3 Техника изготовления и подготовки многополосных изданий к печати Типы электронных носителей, принимаемых в производство - Компакт-диски CD-R ,CD-RW, DVD-R, DVD-RW (стандарт ISO9660) - Устройства, подключаемые через USB, вместе с ...
... средних и крупных государственных и коммерческих организаций постепенно отказываются от использования только ПК, задачей сегодняшнего дня - создание открытых и распределенных информационных систем. На сегодняшний день развитие информационных технологий - создание единых сетей предприятий и корпораций, объединяющих удаленные компьютеры и локальные сети, часто использующие разные платформы, в ...
0 комментариев