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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 21:31   #1
Chuvak ot dushi
 
Регистрация: 14.10.2010
Сообщений: 6
По умолчанию Нужно доделать игру

Посмотрите, пожалуйста, код программы и исправьте ошибки (программа написана на PascalABC.NET). Вот код:

program shariki;

uses
GraphABC;

type
Ball = record
x, y, r, dx, dy, vx, vy, SBD: integer;
c: Color; del: boolean;

procedure Init(xx, yy, rr: integer; cc: Color); //инициализирует данные
begin
x := xx; y := yy;
r := rr; c := cc;
vx := random(-3, 3);
vy := random(-3, 3);
SBD := Random(10, 20);
repeat
dx := Random(7) - 3;
dy := Random(7) - 3;
until (dx <> 0) or (dy <> 0);
end;

procedure Draw; // рисует объекты
begin
Brush.Color := c;
FillCircle(x, y, r);
end;

procedure Hide; // <прячет> объекты
begin
Brush.Color := clWhite;
FillCircle(x, y, r + 2);
end;

procedure MoveTo(xx, yy: integer); // элемент <Move>
begin
Hide;
x := xx; y := yy;
Draw;
end;

procedure MoveOn(dx, dy: integer); // элемент <Move>
begin
MoveTo(x + dx, y + dy);
end;

procedure Delete;// удаляет шарики при столкновении

procedure BallStep; // обычное движение шариков
begin
if (x + dx - r <= 0) or (x + dx + r >= WindowWidth) then
dx := -dx;
if (y + dy - r <= 0) or (y + dy + r >= WindowHeight) then
dy := -dy;
x += dx;
y += dy;
end;

procedure Move; //двигает объекты
begin
BallStep;
MoveOn(vx, vy);
Draw;
end;
end;

var
player, d: Ball;
b: array[1..100] of Ball;
a: integer;

procedure Ball.Delete; // удаляет шарики при столкновении
begin
d.Init(10, 180, 20, clBlue);
d.Draw;
while true do
begin
ClearWindow;
d.Move;
end;
del := false;
if d = player then
begin
Hide;
del := true;
end;
end;

procedure MyKeyDown(key: integer); // реакция на нажатые клавиши
begin
case key of
vk_left: player.MoveOn(-5, 0);
vk_right: player.MoveOn(5, 0);
vk_up: player.MoveOn(0, -5);
vk_down: player.MoveOn(0, 5);
vk_F3: player. r += 2;
vk_F4: player. r -= 2;
vk_F5: player. c := clRandom;
end;
a += 1;
TextOut(5, 10, a.ToString);
end;

begin
var n: integer := 50;
player.Init(Window.Center.X, Window.Center.Y, 30, clRed);
player.Draw;
OnKeyDown := MyKeyDown;
for var i := 1 to n do //добавление массива шариков <50>
begin
LockDrawing;
b[i].Init(270, 180, 20, clBlue);
end;
Redraw;
while True do
begin
ClearWindow;
for var i := 1 to n do
b[i].Move;
Redraw;
Sleep(10);
end;
end.
Chuvak ot dushi вне форума Ответить с цитированием
Старый 22.12.2010, 22:18   #2
a1b2
Заблокирован
 
Регистрация: 22.12.2010
Сообщений: 3
По умолчанию

чувак, месяцок подожди, бейсик доучу, паскаль выучу, помогу!

если конешно темку твою не закроют или не поздно будет
a1b2 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
записи. доделать нужно.. Shelena Помощь студентам 5 21.11.2010 18:26
нужно доделать. на паскале ddeman666 Помощь студентам 1 14.06.2010 18:08
Нужно доделать 2 сайта Irina-70 Фриланс 1 19.02.2009 15:48
Доделать браузерную игру Beliar Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 31.07.2008 19:24
Доделать браузерную игру. Beliar Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 31.07.2008 15:07