Четверг, 11 Августа 2022, 16:57

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » PascalABC
PascalABC
Darkangel22388Дата: Четверг, 08 Сентября 2011, 19:16 | Сообщение # 1
частый гость
Сейчас нет на сайте
Кто может помочь создать игру на данном языке. Именно игру и именно на этом языке(
Или кто может подсказать уроки, примеры по созданию игр на этом языке
Писать либо в теме, или ЛС, или Ася 222 666 674
KamskiiДата: Четверг, 08 Сентября 2011, 19:44 | Сообщение # 2
Game ≠ Toy
Сейчас нет на сайте
Какой ABC - тот, который .NET или старый?
TimKruzДата: Четверг, 08 Сентября 2011, 20:30 | Сообщение # 3
старожил
Сейчас нет на сайте
Ты сначала сам язык выучи, чтобы мог на нём какую-нибудь программу написать (не игру), при чём сам, а потом уже игры начинай делать.
Впервые слышу о таком, и, думаю, что уроков не будет. Есть уроки, и то мало, для Delphi, Lazarus, но они всем известны.
Да и вообще, какую игру тебе надо сделать? (только не говори про ММОРПГ) Потому что для разных игр нужны разные методы работы. Может, какую-то конкретную игру невозможно создать на таком языке...


Darkangel22388Дата: Четверг, 08 Сентября 2011, 23:27 | Сообщение # 4
частый гость
Сейчас нет на сайте
.нет нужен
TimKruz, блин а мне нужно мморпг наподобие вов и ла2 создать:(
Шучу, я полная что этот язык вообще не предназначен для игр, а нужна игра наподобие бомбермэна. Я примерно знаю как сделать, но знаю не все:(
BlablablaДата: Пятница, 09 Сентября 2011, 01:02 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Бери в инете любой пример на паскале и переделывай под АБС.

Nothing is true, everything is permitted.
КластерДата: Пятница, 09 Сентября 2011, 02:04 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Я советую афтору темы изучать сразу Lazarus и паскаль выучит, и приложения сможет создавать. А там и игры. Вообще с паскаля хорошо изучать само программирование, понимаешь его смысл, а потом уже переходить на другие языки программирования. Лично мне в своё время Delphi помог в изучении.
TimKruzДата: Пятница, 09 Сентября 2011, 20:05 | Сообщение # 7
старожил
Сейчас нет на сайте
Darkangel22388, ну, PascalABC может выводить графику (стандартную Windows-кую хотя бы) и работать с объектами (хотя простую игру можно и без них сделать, но будет хаос в коде, и потом сам же можешь запутаться). Тогда на нём можно сделать игру
Quote (Darkangel22388)
наподобие бомбермэна

В принципе, бомбермена можно сделать и на структурно-ориентированном TurboPascal, используя его допотопную графику. Но даже без "нормальной" графики можно сделать - с использованием псевдографики, символов вместо картинок.

Quote (Darkangel22388)
Я примерно знаю как сделать, но знаю не все:(

А ты скажи, что ты знаешь, а чего не знаешь, может, подскажем, как это сделать.

P.S. Кто не знает, что это такое PascalABC: http://pascalabc.net/. biggrin


Darkangel22388Дата: Пятница, 09 Сентября 2011, 20:49 | Сообщение # 8
частый гость
Сейчас нет на сайте
самое обидное что мне нужно именно абс, если бы было не принципиально то я бы дельфи использовал:(
Ну я знаю что почти все через алгаритм нужно, я просто думал что пример пакмана у меня есть, а оказалось нет:(
Кстати графика мне вообще не принципиально:-)
TimKruzДата: Суббота, 10 Сентября 2011, 15:48 | Сообщение # 9
старожил
Сейчас нет на сайте
Quote (http://pascalabc.net/)
PascalABC.NET — это: современный язык программирования, основанный на Delphi (Object Pascal) и сочетающий простоту языка Паскаль и огромные возможности платформы .NET

Quote (Darkangel22388)
то я бы дельфи использовал:(

Ну вот. Поищи пример игры на Delphi (или любой другой Object Pascal), или сам напиши её на Delphi, а потом только синтаксис исправить придётся, ну и, думаю, какие-нибудь модули дополнительные, если их в PascalABC нету.
Quote (Darkangel22388)
Ну я знаю что почти все через алгаритм нужно, я просто думал что пример пакмана у меня есть, а оказалось нет:(

Так если тебе нужен алгоритм работы игры, то тут уж не важно, какой язык нужен. Алгоритм относительно просто придумать...


Darkangel22388Дата: Суббота, 10 Сентября 2011, 16:16 | Сообщение # 10
частый гость
Сейчас нет на сайте
А можете показать пример перехвата клавиш с клавиатуры, человек нажимает допустим W и происходит Exit?
TimKruzДата: Суббота, 10 Сентября 2011, 16:55 | Сообщение # 11
старожил
Сейчас нет на сайте
Ну в Delphi это можно сделать с помощью событий, типа onkeypress и других.
Т.к. PascalABC основан на Delphi, то у него тоже должны быть события.
***
Во, сам разобрался сделал:
Code
//Подключаем модуль для простого вывода графики, чтобы не заморачиваться с формами
uses GraphABC;

//Обработчик нажатия клавиши
procedure KeyPress(ch:char);
begin
   //Если код нажатой клавиши равен 27, что соответствует escape, выходим
   if ch=#27 then halt;
end;

begin
   //Привязка обработчика к событию
   OnKeyPress:=KeyPress;
end.


P.S. Смотри всё тут: http://pascalabc.net/downloads/pabcnethelp/PABC_Help_Web.html. Там хорошая справка, всё подробно описано с примерами.


Darkangel22388Дата: Суббота, 10 Сентября 2011, 17:41 | Сообщение # 12
частый гость
Сейчас нет на сайте
TimKruz, а у тебя ася есть?
TimKruzДата: Суббота, 10 Сентября 2011, 17:52 | Сообщение # 13
старожил
Сейчас нет на сайте
Darkangel22388, вот код программы, что-то типа простой игры. Написал сам, минут за пять.
Чтобы сделать бомбермена - остаётся добавить бомбы. biggrin Ну это можно сделать так же, как я добавил игрока.
Вот код (всё с комментариями):
Code
//Подключаем GraphABC для графики и Timers для таймера
uses GraphABC, Timers;

//map - карта, на ней 0 - стенка, остальное - свободное пространство
//сделал так, чтобы проще было генерировать
//лучше было бы map:array[интервал, интервал] of 0..1
//но это смотря сколько типов объектов у тебя есть на карте
var map:array [0..9, 0..9] of 0..9;
//Позиция игрока - p.x и p.y
//Для бомб можно сделать также
p:point;

//Устанавливаем карту - здесь может быть любой код, например, чтение из файла
//ну или какая-то интеллектуальная генерация.
//У меня используется простой рандом
procedure setmap;
var i,j:byte;
begin
   randomize;
   for i:=0 to 9 do
     for j:=0 to 9 do
       map[i,j]:=random(10);
   //Игрок в первой клетке, поэтому она не должна быть заблокирована
   map[0,0]:=1;
end;

//Прорисуем карту на экране
//Чёрный квадрат - стена, белый - пол
//Голубой кружок - игрок
procedure drawmap;
var i,j:byte;
begin
   for i:=0 to 9 do
     for j:=0 to 9 do
     begin
       if map[i,j]=0 then
         graphabc.SetBrushColor(system.Drawing.Color.black)
       else  
         graphabc.SetBrushColor(system.Drawing.Color.White);
       graphabc.Rectangle(i*25, j*25, i*25+25, j*25+25);
     end;
   //...Ну вот тут-то и рисуется игрок
   graphabc.SetBrushColor(system.Drawing.Color.Aqua);
   graphabc.Ellipse(p.X*25, p.Y*25, p.X*25+25, p.Y*25+25);
   //...
   //Дальше можно прорисовать бомбы и врагов, например
end;

//Обрабатываем сигнал таймера
procedure tic;
begin
   //Очищаем экран
   Window.Clear;
   //Рисуем карту в буфере
   drawmap;
   //Перерисовываем экран
   Redraw;
end;

//Обрабатываем нажатия клавиш
//Просмотри внимательно условия вложенных конструкций IF
//В них проверяется, чтобы игрок не вышел за границы поля
//и не зашёл на стену
//...
//...Можно было бы одним Case оформить, но мне нравится так
procedure KeyPress(ch:char);
begin
   //Если Escape (код клавиши №27) - выходим
   if ch=#27 then halt else
   //"Влево" - кнопка A
   if ch='a' then
     begin
       if (p.X>0) and (map[p.X-1, p.Y]<>0) then p.X-=1;
     end else
   //"Вправо" - кнопка D
   if ch='d' then
     begin
       if (p.X<9) and (map[p.X+1, p.Y]<>0) then p.X+=1;
     end else
   //"Вверх" - кнопка W
   if ch='w' then
     begin
       if (p.y>0) and (map[p.X, p.Y-1]<>0) then p.y-=1;
     end else
   //"Вниз" - кнока S
   if ch='s' then
     begin
       if (p.y<9) and (map[p.X, p.Y+1]<>0) then p.y+=1;
     end;
end;

begin
   //Заблокируем экран, чтобы рисовать в буфере
   //Это нужно, чтобы небыло мерцания экрана
   lockdrawing;
   //Установим карту (случайную)
   setmap;
   //Начальные позиции игрока - 0 и 0
   p.X:=0; p.Y:=0;
   //Задаём процедуру обработки события OnKeyPress
   //Само событие задано в модуле GraphABC
   OnKeyPress:=KeyPress;
   //Задаём новый таймер, интервал - 100 милисекунд
   //Процедура обработки "тика" таймера - tic
   var t:=new Timer(100, tic);
   //Запускаем таймер
   t.Start;
   //Программа с использованием модуля GraphABC не завершается сама,
   //даже если кончились команды основного блока программы.
   //Это полезно для событий, таймеров, и прочего, что нужно для
   //игр и программ построения графики.
end.


Darkangel22388Дата: Суббота, 10 Сентября 2011, 18:11 | Сообщение # 14
частый гость
Сейчас нет на сайте
TimKruz, СПС тебе большое. Теперь мне осталось с Искусственным интеллектом помучиться)))
TimKruzДата: Суббота, 10 Сентября 2011, 18:41 | Сообщение # 15
старожил
Сейчас нет на сайте
Darkangel22388, всегда рад помочь. cool
Выложишь на GCUP (ну, куда-нибудь сюда) то, что получится в конце концов? Интересно будет посмотреть. yes

P.S. ICQ не пользуюсь, либо в Л.С. на GCUP пиши, либо на мыло: TimoshinDS@mail.ru. shades


Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » PascalABC
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг