Тема: Гра з числами на паскалі
1 ) Можеш підказати чому вічно видає , YOU LOSE , правильно чи не правильно зробив , якщо зробив правильно має писати YOU WIN , що не правильно YOU LOSE , а воно вічне видає YOU LOSE ?
2 ) І як вставити в гру музику , наприклад спочатку грає лалалала , виграв Парарі , програв туду ?
3 ) Зробити кнопку меню , де буде написано як грати ( потрібно скласти числа щоб їх сума чисел в кожному рядку дорівнювала сумі чисел кожного стовпчика (приблизно так)) .
4 ) Рекорди або час виконання роботи . Приклад вимірювання часу роботи алгоритму
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.