Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2014, 12:02   #1
Homa95
Новичок
Джуниор
 
Регистрация: 06.04.2014
Сообщений: 2
По умолчанию Игровая программа на языке Паскаль «Розстановка трьох чисел»

В каждой из 9 ячеек квадрата размером 3 * 3 клетки постаиты одно из чисел 1, 2, 3 таким образом, чтобы сумма чисел, стоящих в каждом вертикальном ряду, в каждом горизонтальном ряду, а также по любой диагонали равнялась 6.

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

Последний раз редактировалось Homa95; 06.04.2014 в 12:30.
Homa95 вне форума Ответить с цитированием
Старый 06.04.2014, 16:02   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
Вопрос

Самостоятельные попытки были?
Streletz вне форума Ответить с цитированием
Старый 29.04.2014, 02:22   #3
Homa95
Новичок
Джуниор
 
Регистрация: 06.04.2014
Сообщений: 2
По умолчанию Паскаль

1)Сделать кнопку меню, где будет написано как играть( нужно составить числа чтоб их сума чисел в каждому рядку была равна суме чисел каждого столбца(примерно так)).

2)Рекорды или время исполнения работы. Пример измерения времени работы алгоритма
Код:
program MYPROG ;
uses Dos ;
type
   TTime = record 
      Hours , 
      Minutes , 
      Seconds,  
      HSeconds: Word
   end ;
var
   StartTime , FinishTime : TTime { Время старта и финиша алгоритма }
   Algorithm1_Time : Longint ; { Время работы алгоритма }
function ResTime ( const STime , FTime : TTime ) : Longint ;
{ Определяет разницу между временем окончания и время старта алгоритма }
begin
  ResTime =
   36000   ( FTime.Hours - STime.Hours ) + { часы }
     6000   ( FTime.Minutes - STime.Minutes ) + { минуты }
      100   ( FTime.Seconds - STime.Seconds ) + { секунды }
          ( FTime.HSeconds - STime.HSeconds ) { соты секунды }
end ;
BEGIN
     with StartTime do GetTime ( Hours , Minutes , Seconds , HSeconds ) ;
   with FinishTime do GetTime ( Hours , Minutes , Seconds , HSeconds ) ;
   Algorithm1_Time = ResTime ( StartTime , FinishTime ) ;
   writeln (' Algorithm1 time =' , Algorithm1_Time )          
END .
Сама прога:
Код:
Program Liniya;
Uses Graph, Crt;
Var GrDriver, grMode: integer;
k : string[2];
kk : char;
x,y:integer;
A : array [1..3,1..3] of byte;
Xc, Yc : byte; {koordinata vvoda}
h: real;
i,j:integer;

Procedure InitGr;
begin
GrDriver := Detect;
InitGraph (GrDriver, grMode, '');
end;
Procedure Fon;
begin
SetColor (White);
setlinestyle(0,0,0);
Line (161,80,161+318,80); {verh}
Line (161,80,161,80+318); {liva}
Line (161,80+318,161+318,80+318); {nuz}
Line (161+318,80,161+318,80+318); {prava}
Line (161,80+106,479,80+106); {1 gor}
Line (161,80+106+106,479,80+106+106); {2 gor}
Line (161+106,80,161+106,398);
Line (161+106*2,80,161+106*2,398);

end;

Procedure Cell(xl,yl:integer);
begin
setlinestyle(0,0,3);
rectangle(xl+1,yl+1,xl+105,yl+105);
end;

Function IsOf:boolean;
var
s1,s2,s3,s4,s5,s6,s7,s8:byte;
begin
s1 := a[1,1]+a[1,2]+a[1,3];
s2 := a[2,1]+a[2,2]+a[2,3];
s3 := a[3,1]+a[3,2]+a[3,3];

s4 := a[1,1]+a[2,1]+a[3,1];
s5 := a[1,2]+a[2,2]+a[3,2];
s6 := a[1,3]+a[2,3]+a[3,3];

s7 := a[1,1]+a[2,2]+a[3,3];
s8 := a[3,1]+a[2,2]+a[1,3];
{ writeln(s1:2,s2:2,s3:2,s4:2,s5:2,s6:2,s7:2,s8:2);}
if (s1=s2) and (s2=s3) and (s3=s4) and (s4=s5) and (s5=s6) and (s6=s7) and (s7=s8) and (s8=6) then
IsOf := true
else
IsOf := false;

end;

Begin
InitGr;
fon;

outtextxy(1,1,'vybir komirky : WASD');
outtextxy(1,15,'C - clear');
outtextxy(1,30,'G - compare');
outtextxy(1,45,'N - exit');

setColor(green);
x := 161; y := 80;
xc:=1;yc:=1;
Cell(x,y);

repeat
kk := upcase(readkey);
case kk of
'S': begin

setcolor(black);
cell(x,y);
fon;
setcolor(green);
if y = 292 then
y := 80 else
y := y + 106;
cell(x,y);
case y of
80 : Xc := 1;
186: Xc :=2;
292: Xc :=3;
end;

end;
'W': begin

setcolor(black);
cell(x,y);
fon;
setcolor(green);
if y = 80 then
y := 292 else
y := y - 106;
cell(x,y);
case y of
80 : Xc := 1;
186: Xc :=2;
292: Xc :=3;
end;

end;
'A': begin

setcolor(black);
cell(x,y);
fon;
setcolor(green);
if x = 161 then
x := 373 else
x := x - 106;
cell(x,y);
case x of
161: Yc := 1;
267: Yc :=2;
373: Yc :=3;
end;

end;
'D': begin

setcolor(black);
cell(x,y);
fon;
setcolor(green);
if x = 373 then
x := 161 else
x := x + 106;
cell(x,y);
case x of
161: Yc := 1;
267: Yc :=2;
373: Yc :=3;
end;

end;

'1': begin
settextstyle(1,0,9);
setcolor(black);
outtextxy(x+25,y-8,'2');
outtextxy(x+25,y-8,'3');
setcolor(red);
settextstyle(1,0,9);
outtextxy(x+25,y-8,'1');
a[xc,yc] := 1;
settextstyle(0,0,0);
end;

'2': begin
settextstyle(1,0,9);
setcolor(black);
outtextxy(x+25,y-8,'1');
outtextxy(x+25,y-8,'3');
setcolor(red);
settextstyle(1,0,9);
outtextxy(x+25,y-8,'2');
a[xc,yc] := 2;
settextstyle(0,0,0);
end;
'3': begin
settextstyle(1,0,9);
setcolor(black);
outtextxy(x+25,y-8,'2');
outtextxy(x+25,y-8,'1');
setcolor(red);
settextstyle(1,0,9);
outtextxy(x+25,y-8,'3');
a[xc,yc] := 3;
settextstyle(0,0,0);
end;
'C': begin
ClearDevice;
setcolor(white);
settextstyle(0,0,0);
outtextxy(1,1,'vybir komirky : WASD');
outtextxy(1,15,'C - clear');
outtextxy(1,30,'G - compare');
outtextxy(1,45,'N - exit');

fon;
setColor(green);
cell(x,y);
end;
'G': begin
{ClearDevice;}
settextstyle(0,0,2);

if isof then
outtextxy(1,60,'YOU WIN')
else
outtextxy(1,60,'YOU LOSE');
settextstyle(0,0,0);
{ fon;
setColor(green);
cell(x,y);}
end;

end;
until upcase(kk) = 'N';
CloseGraph;

End.

Последний раз редактировалось Homa95; 29.04.2014 в 16:15.
Homa95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль ABC. Программа на языке Паскаль. Helen1 Паскаль, Turbo Pascal, PascalABC.NET 6 13.01.2018 21:46
программа на языке Паскаль 4еловек-молекула Паскаль, Turbo Pascal, PascalABC.NET 2 16.12.2012 18:39
Программа на языке Паскаль. NovichОК Помощь студентам 1 13.05.2012 20:39
Программа на языке паскаль Colville Помощь студентам 8 13.01.2012 14:18
ЗАДАЧА НА ПОСЛЕДОВАТЕЛЬНОСТЬ ЧИСЕЛ. ПОМОГИТЕ ПОЖАЛУЙСТF НАПИСАТЬ ПРОГРАММУ НА ЯЗЫКЕ ПАСКАЛЬ владимир/к. Помощь студентам 2 21.01.2009 03:03