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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2012, 16:01   #1
Alina111
Пользователь
 
Регистрация: 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.
Alina111 вне форума Ответить с цитированием
Старый 08.06.2012, 23:16   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Если ты сама писала этот код - расскажи, что конкретно не получается? )
Son Of Pain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра Дартс Alina111 Паскаль, Turbo Pascal, PascalABC.NET 0 06.05.2012 14:59
начисление ALEKS2008 Microsoft Office Excel 7 26.11.2011 20:34
Определить сколько баллов было набрано.... Ins1De Общие вопросы C/C++ 2 14.11.2011 00:05
Вывести общую, среднюю баллов [Delphi] I_am_a_student Помощь студентам 8 10.12.2010 16:33
Задачка по Excel'ю на 5 баллов для решившего Egorio Microsoft Office Excel 2 20.12.2006 13:21