Пользователь
Регистрация: 20.12.2011
Сообщений: 40
|
Игра дартс,начисление баллов
Игра Дартс.
Я сделала меню, поле для игры с движущейся мишенью и дротиком.Помогите, пожалуйста, сделать так,чтобы когда нажимаешь на какую-нибудь клавишу,например пробел, на мишени появлялась красная точка в месте куда бы стрельнул дротик и начислялся балл, чем ближе к мишени тем больше балл.
Код:
Program darts;
uses graph,crt;
Var x1,y1,x2,y2:integer;k:word; ch:char;
m1,x,y,s,f,d,s1,f1,p:integer;
i,r,l:byte;
Procedure menu;
var d,m,i,x,y:integer;k:word;
begin
d:=detect;
InitGraph(d,m,'');
SetBkColor (7);
end;
Procedure pryamoyg(x1,y1,x2,y2:integer;k:word);
BEGIN
Begin
SetFillStyle(1,8);
Bar(250,80,400,130);
SetTextStyle(4,HorizDir,5);
Setcolor(13);
OutTextXY(280,80,'Start');
Setcolor(15);
Rectangle(250,80,400,130);
end;
begin
SetFillStyle(1,8);
Bar(250,150,400,200);
SetTextStyle(4,HorizDir,5);
Setcolor(13);
OutTextXY(280,150,'Load');
Setcolor(15);
Rectangle(250,150,400,200);
end;
Begin
SetFillStyle(1,8);
Bar(250,220,400,270);
SetTextStyle(4,HorizDir,5);
Setcolor(13);
OutTextXY(290,220,'Help');
Setcolor(15);
Rectangle(250,220,400,270);
end;
Begin
SetFillStyle(1,8);
Bar(250,290,400,340);
SetTextStyle(4,HorizDir,5);
Setcolor(13);
OutTextXY(290,290,'Exit');
Setcolor(15);
Rectangle(250,290,400,340);
end;
end;
Procedure oformlenie;
begin
R:=5;
SetColor(DarkGray);
Circle(120, 200, R*20);
SetColor(White);
Circle(120, 200, R*15);
SetColor(DarkGray);
Circle(120, 200, R*10);
SetColor(White);
Circle(120, 200, R*5);
SetColor(DarkGray);
Circle(120, 200, R*1);
SetColor(DarkGray);
Circle(520, 200, R*20);
SetColor(White);
Circle(520, 200, R*15);
SetColor(DarkGray);
Circle(520, 200, R*10);
SetColor(White);
Circle(520, 200, R*5);
SetColor(DarkGray);
Circle(520, 200, R*1);
Setcolor(15);
SetTextStyle(4,HorizDir,6);
OutTextXY(220,10,'*DARTS*');
end;
Procedure podkl;
begin
d:=detect;
InitGraph(d,m1,'');
SetBkColor (7);
end;
Procedure mishen(x,y,i:integer;k:word);
begin
i:=15;
While i<=75 do
begin
i:=i+15;
Setcolor(k);
circle(x,150,i);
end;
end;
Procedure drotik(s,f,ii:integer);
begin
Setcolor(ii);
Line(s,f,s,f+50);
Setcolor(ii);
Line(s,f,s+10,f+30);
Setcolor(ii);
Line(s,f,s-10,f+30);
Setcolor(ii);
Line(s+10,f+30,s-10,f+30);
end;
Procedure dvigenie;
var ii:integer;
begin
s1:=300; f1:=350;
ii:=7;
mishen(x,y,i,k);
drotik(s1,f1,ii);
x:=300; y:=150; i:=75; k:=7;
repeat
begin
mishen(300,150,i,15);
d:=10;
m1:=100;
x:=300;
drotik(s1,f1,5);
While x<450 do
begin
drotik(s1,f1,5);
mishen(x,y,i,7);
x:=x+d;
mishen(x,y,i,15);
Delay(m1);
drotik(s1,f1,7);
end;
end;
begin
mishen(450,150,i,15);
d:=10;
m1:=100;
x:=450;
While x>200 do
begin
drotik(s1,f1,5);
mishen(x,y,i,7);
x:=x-d;
mishen(x,y,i,15);
Delay(m1);
mishen(x,y,i,7);
end;
end;
begin
mishen(200,150,i,7);
d:=10;
m1:=100;
x:=150;
drotik(s1,f1,5);
While x<300 do
begin
drotik(s1,f1,5);
mishen(x,y,i,7);
x:=x+d;
mishen(x,y,i,15);
Delay(m1);
mishen(x,y,i,7);
end;
end;
until ch=#27;
readln;
closegraph;
end;
procedure game;
var s1,f1:integer;
begin
podkl;
mishen(x,y,i,k);
dvigenie;
closegraph;
end;
Procedure kursor(a,b,a1,b1:integer);
Begin
Setcolor(13);
setlinestyle(userbitln,$FFFF,3);
setfillstyle(1,13);
Rectangle(a,b,a1,b1);
end;
{osnovnaya programma}
var a,b,a1,b1,m:integer;
begin
menu;
oformlenie;
pryamoyg(x1,y1,x2,y2,k);
m:=80;
a:=250; b:=80; a1:=400; b1:=130;
repeat
ch:=readkey;
if ch=#0 then ch:=readkey;
setcolor(15);
setlinestyle(userbitln,$FFFF,3);
setfillstyle(1,13);
Rectangle(a,b,a1,b1);
case ch of
#80: if m+70>340 then else begin b:=b+70; b1:=b1+70; m:=m+70; end;
#72: if m-70<80 then else begin b:=b-70; b1:=b1-70; m:=m-70; end;
end;
kursor (a,b,a1,b1);
setcolor(15);
setlinestyle(0,$FFFF,1);
if (ch=#13) and (b=80) then
begin
game;
end;
if (ch=#13) and (b=220) then
begin
clrscr;
setcolor(7);
Setcolor(1);
SetTextStyle(1,HorizDir,3);
OutTextXY(0,0,'Igra "Darts".');
OutTextXY(0,30,'Celu dannoy igry yavlyaettsya popadanie');
OutTextXY(0,60,'v dvijuushyusya mishen.U vas neogranichennoe');
OutTextXY(0,90,'kolichestvo drotikov.Vremya ogranicheno.');
end;
until ch=#27;
closegraph;
end.
|