PSPверсия |  Новое на сайте |  Обратная связь |  Команда сайта |  FAQ |  ПРАВИЛА |     
 
Обзор нового на PSPinfo.RU

Ближайшие Сходки:
ДатаГородНомерНазваниеЗаписаться
собери друзей и сообщи об этом всем! »»
Самые популярные FLASH игры:

Sonic
играли 89408 раз

Muay Thai
играли 44478 раз

Castle Defender
играли 42472 раз

Urabanslug
играли 36338 раз

Mud and Blood (vietnam)
играли 34379 раз

chicken
играли 33775 раз

sonicblox
играли 33654 раз

x227sm
играли 33570 раз

Crazy Scates
играли 28396 раз
Абсолютные лидеры:
НовостиТемыСейвыОбоиВидеороликиВикторина
1..:Dr.Who:.945
2.iliya23420
3.Константин414
4.(:389
5.Masserau377
1.Dankin333
2.Игорь330
3.kalash1322
4.DJAMrik271
5.Артем=)252
1..:Dr.Who:.347
2.legofan12130
3.-=Sephiroth=-117
4.Dan96106
5.Patric Star104
1.wushu12250
2.Metal Sonic7404
3.iliya237000
4.Теккен6652
5.LFY6309
1..:Dr.Who:.4548
2.Михаил3742
3..:Canon:.1920
4.Ivan1760
5.Гомер Симпсон1535
1.Chizuru Minamoto2610552500
2..:Dr.Who:.2609446950
3..:Buxou:.1724432140
4.snupi1637432090
5.vitas1551113420750
расширенная статистика »»

   Все форумы » PSP » Софт для PSP » программирование для psp Предыдущая тема :: Следующая тема  
Сейчас эту тему просматривают: [требуется регистрация] -> [требуется регистрация]
Гостей: [требуется регистрация]
 
Спасибо за пост: 4 Ссылка на пост #1 Добавлено: 4 мая 2008 14:56    

Забанен
LIon__
--

Возраст: 29 | | Рыбы
Сообщений: 377
Благодарности: 22 / 55
Репутация: 9
Предупреждений: 1
Друзья
Тут: 14 лет 7 месяцев
Забудьте про тупые проги!!
Зарание извеяюсь за ошибки:)
Сайт там где полно уроков и самодельные проги(англиский)тут

там всё по англиски так что читайте лучше мою статью:


Программируем для PSP: Часть I, настройка компилятора


Давайте условимся сразу: я следую паттерну "изучение обучением", т.е. учу, одновременно изучая, обгоняя читателей на 2-3 "шага" вперед. Однако это не значит, что я ничего не знаю и все, что говорю - обычные копипасты: я стараюсь разобраться в теме, прежде чем писать о ней. Поэтому смело задавайте вопросы, этим вы принесете пользу и себе, и мне: на вопросы, ответ на которые я не знаю, я буду его искать, осозновать и рассказывать вам.

Итак, в этом топике будет небольшой рассказ о том, как скомпилировать и запустить первую программу на своей приставке. Сразу предупреждение: статья мегатехнического плана, почти все содержание касается утомительной, но быстрой настройки компилятора, а в результате вы получите лишь банальный "Hello World". Однако без нее никак.

Будем предполагать как данность, что у вас есть приставка Sony PSP, перепрошитая до последней версии - 3.90 M33-3 (так называемая custom firmware, неофициальная прошивка). О том, как перепрошиваться, уже рассказывали многие, и останавливаться на этом я не буду. Так же будем считать, что в кирпич ваш вставлена флешка, на которой есть хотя бы 50кб свободного места, и вы имеете к ним доступ (например, через саму PSP).

Скажу сразу: я почти уверен, что ничего плохого с вашей приставкой не случится, если вы будете достаточно аккуратны, но никаких гарантий дать, к сожалению, не могу. fellow

Используемый язык программирования -- Си, я буду использовать бесплатную IDE Code::Blocks под Windows XP. Пользователи других компиляторов или ОС могут попробовать настроить IDE сами, благо, настройки у всех похожи; я же использовал то, для чего нашел мануал ;)

Для начала, скачаем набор компиляторов, линкеров и библиотек для PSP под названием DevKitPSP. Распакуйте его куда-нибудь, я его распаковал в корень диска E: (теперь у меня есть папка E:devkitpsp).

Теперь откройте Code::Blocks. В меню выберите Settings→Compiler and Debugger, как Selected Compiler в открывшемся окошке выберите GNU GCC (он должен стоять по умолчанию), скопируйте его, назвав, например, DevKitPSP, и настройте его:

Вкладка Search Directories→Compiler (удалите все, что там есть, и нажимайте Add для добавления каждого из путей):

E:devkitPSPinclude
E:devkitPSPpspinclude
E:devkitPSPpspsdkinclude


Linker:

E:devkitPSPlib
E:devkitPSPpsplib
E:devkitPSPpspsdklib


Вкладка Toolchain Executables:

Compiler's installation directory: E:devkitPSP . Там есть примечание, что в этой папке должна быть подпапка bin, проверьте.
C-compiler: psp-gcc.exe
C++-compiler: psp-g++.exe
Linker for dynamic libs: psp-g++.exe
Linker for static libs: psp-ar.exe
Еще три поля я оставил пустыми.


Теперь можно жать OK, и переходить к созданию нового проекта (File→New→Project..., слева в окошке жмем Projects и выбираем Empty). Заполняем Project Title (не играет роли, пусть будет PSPHelloWorld), не забываем поставить папку для сохранения проекта (я вон в первый раз забыл, и получил кучу глюков и ошибок); компилятор, разумеется, ставим свежесозданный нами.

Наш проект девственно пуст, создаем фаил (File→New→File..., на название наплевать, я выбрал main.c) -- не забудьте в мастере создания фаила выбрать как язык Си и поставить галочки "Add to current project", "Debug" и "Release" (почему они не стоят по умолчанию?).

В созданный фаил копируем код:


#include

#include


PSP_MODULE_INFO("Hello World", 0, 1, 1);

int ExitCallback(int Arg1, int Arg2, void *Common)
{
sceKernelExitGame();
return 0;
}

int CallbackThread(SceSize Args, void *Argp)
{
int CallbackId;
CallbackId = sceKernelCreateCallback("Exit Callback", ExitCallback, NULL);
sceKernelRegisterExitCallback(CallbackId);
sceKernelSleepThreadCB();
return 0;
}

int SetupCallbacks(void)
{
int ThreadId = 0;
ThreadId = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if (ThreadId >= 0)
{
sceKernelStartThread(ThreadId, 0, 0);
}
return ThreadId;
}

int main(int argc, char ** argv)
{
pspDebugScreenInit();
SetupCallbacks();
while(1)
{
pspDebugScreenPrintf ("Hello World");
sceDisplayWaitVblankStart();
}
sceKernelSleepThread();
return 0;
}


Код писал не я, кстати: опыта пока-что маловато, хотя я вполне понимаю, что там происходит и как - в любом случае, в этом топике я останавливаться на этом не буду.

Теперь последние штрихи к настройке. Мы уже настроили то, с помощью чего будем компилировать, но не настроили, как и что у нас должно выходить. Поэтому жмем правой кнопкой на название проекта справа, выбираем Properties, а там -- Build targets. Снимаем галочку "Auto-generate filename extension", и правим в Output filename расширение "exe" на "elf". Выполняем тоже самое для конфигурации Release, жмем Ok.

Жмем правой кнопкой на название проекта опять, выбираем Build Options и, на вкладке Linker Options, вписываем в Other linker options:

-lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpsplibc -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel

. Повторяем для Release.

Вроде всё (надеюсь, это последняя статья скучного технического плана). Теперь собираем проект (Build→Build или знакомое всем Ctrl-F9) -- если вдруг появились ошибки, то думаем, что же сделали не так, а потом спрашиваем в комментариях (может, я забыл чего).

Чтобы не настраивать потом заново, стоит сохранить проект как шаблон (File→Save Project as user-template...).

Итак, у нас есть elf-фаил нашей программы. Перед тем, как закидывать его на PSP, надо преобразовать его в EBOOT.PBP (название придумал не я, честно). Для этого у меня стоит такой bat-ник:

"E:devkitPSPbinmksfo.exe" %1/bin/Debug/%1 %1/bin/Debug/%1.sfo
"E:devkitPSPbinpsp-fixup-imports.exe" %1/bin/Debug/%1.elf
"E:devkitPSPbinpsp-strip.exe" %1/bin/Debug/%1.elf -o %1/bin/Debug/stripped.elf
"E:devkitPSPbinpack-pbp.exe" %1/bin/Debug/EBOOT.PBP %1/bin/Debug/%1.sfo NULL NULL NULL NULL NULL %1/bin/Debug/stripped.elf NULL


Он располагается у меня в директории pspprj, в которой я создаю по папке для каждого проекта. Используется он так: make_eboot.bat HelloWorld . Если у вас другая организация папок, или вы просто хотите его переписать или запускать каждую программу вручную -- просто запускайте по строчке, не забывая заменять %1 на названия или пути к фаилам. В результате у вас получится фаил EBOOT.PBP, его надо будет закинуть в папку /PSP/GAME150/HelloWorld (или другое название)/, а все остальное можно спокойно удалить. Теперь проверяйте (выход -- по кнопке Home).

Как "домашнее задание" -- сделайте так, чтобы все "хелловорлды" были с новой строки. До встречи!

P.S. Вырезал весь "юмор", который сначала вписывал. Всегда самого раздражали тупые шутки в такого рода постах, а в том, что мои шутки не тупы, я быть уверен не могу :)


Остальные части щя выложу:) bully , ток ошибки исправлю:)
Наверх 
Спасибо за пост: 1 Ссылка на пост #2 Добавлено: 4 мая 2008 15:49    

Посетители
вафля
--

Возраст: 28 | | Стрелец
Сообщений: 17
Благодарности: 1 / 1
Репутация: 0
Предупреждений: 0
Друзья
Тут: 14 лет 6 месяцев
Тут про чё?
Наверх 
Ссылка на пост #3 Добавлено: 4 мая 2008 16:49    

Забанен
LIon__
--

Возраст: 29 | | Рыбы
Сообщений: 377
Благодарности: 22 / 55
Репутация: 9
Предупреждений: 1
Друзья
Тут: 14 лет 7 месяцев
про компилятор
Наверх 
Ссылка на пост #4 Добавлено: 5 мая 2008 16:16    

Забанен
Gramoboi
--

Возраст: 32 | | Лев
Сообщений: 40
Благодарности: 0 / 6
Репутация: 0
Предупреждений: 1
Друзья
Тут: 14 лет 10 месяцев
да было дела занимался но забил ((((.........
ICQ: 280681592
Наверх 
Ссылка на пост #5 Добавлено: 7 мая 2008 13:27    

Посетители
F.G.M.
--

Возраст: -- | |
Сообщений: 27
Благодарности: 3 / 2
Репутация: 0
Предупреждений: 0
Друзья
Тут: 14 лет 4 месяцa
LIon__, класная тема, спасибо, буду ждать следующих уроков
Наверх 
Ссылка на пост #6 Добавлено: 10 мая 2008 15:24    

Посетители
pspalexx
--

Возраст: 34 | | Лев
Сообщений: 57
Благодарности: 0 / 1
Репутация: 0
Предупреждений: 0
Друзья
Тут: 14 лет 6 месяцев
LIon__, прекрасная тема, я как раз sdk установил пару дней назад, правда на Linux

Добавлено спустя 15 минут 49 секунд:

LIon__, ты случайно не знаешь чем распаковать Eboot.pbp под Linux (PPC)?
Наверх 
Спасибо за пост: 1 Ссылка на пост #7 Добавлено: 11 мая 2008 00:06    

Забанен
LIon__
--

Возраст: 29 | | Рыбы
Сообщений: 377
Благодарности: 22 / 55
Репутация: 9
Предупреждений: 1
Друзья
Тут: 14 лет 7 месяцев
ждали:)

Программируем для PSP: Часть II. Тотальный контроль



В прошлом туториале мы разобрались с "хелловорлдом", теперь пришло время к следующей, не менее важной вещи: вводе информации. Умея выводить что-то на экран и узнавать, что нажал пользователь, уже можно сделать полезную программу. Фактически, после этого урока уже можно будет начинать что-то свое, однако я бы посоветовал дождаться, хотя бы, спрайтов.

Создадим проект по шаблону, описанному в первой части. Найдем в фаиле функцию main() -- основную функцию программы, а в ней главный цикл ( while(1) { ... } ). Кстати, насчет while(1): в программировании для psp не считается дурным тоном делать бесконечные циклы внутри программы, т.к. выход все равно осуществляется по кнопке HOME, и только так.

Сделаем стандартный цикл обработки сообщений: получение и переваривание. Первое, что нужно сделать -- определить переменную, в которой будет хранится состояние клавиатуры:

SceCtrlData pad; // переменная, где хранится информация о состоянии кнопок (нажаты/не нажаты).


Структура SceCtrlData хранит в себе TimeStamp - количество фреймов, похоже, от запуска программы (надо уточнить!), Buttons -- битовую маску состояния кнопок (учитываются кнопки Select, Start, крестик, треугольник, квадрат, шифты, стрелки, состояние Hold и Home. Все остальное учитывается только в Kernel Mode, за подробностями смотрите фаил devkitPSPpspsdkincludepspctrl.h) и координаты стика Lx и Ly. Поскольку она определена только в pspctrl.h, придется добавить в начало фаила
#include


Итак, стираем все внутренности while'ла, и пишем

sceCtrlReadBufferPositive(&pad, 1); // читаем содержимое буфера э-э клавиатуры


Эта функция заполняет структуру pad текущими значениями состояния кнопок и стика. Кстати, чтобы получить координаты стика удавалось, надо перед while'ом впихнуть 2 строки:

sceCtrlSetSamplingCycle(0);
sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG); // настраиваем на прием информации о положении стика


Иначе джойстик так и застынет на положении (128:128) (это -- середина, сами координаты меняются от 0 до 255).

Итак, мы считали информацию, теперь нужно ее вывести. Вот что получилось у меня:

pspDebugScreenPrintf("TimeStamp %i | Pressed: ", pad.TimeStamp); // выводим TimeStamp
if (pad.Buttons == 0) // ничего не нажато
{
pspDebugScreenPrintf("NONE ");
} else {
if (pad.Buttons & PSP_CTRL_TRIANGLE) pspDebugScreenPrintf("TRIANGLE ");
if (pad.Buttons & PSP_CTRL_CIRCLE) pspDebugScreenPrintf("CIRCLE ");
if (pad.Buttons & PSP_CTRL_CROSS) pspDebugScreenPrintf("CROSS ");
if (pad.Buttons & PSP_CTRL_SQUARE) pspDebugScreenPrintf("SQUARE ");
// какие кнопки нажаты?
}
pspDebugScreenPrintf("(%i) | Stick: %i:%in", pad.Buttons, pad.Lx, pad.Ly);
// выводим координаты стика


Как видите, я учитываю только состояние кнопок с картинками (ну, треугольника, круга, квадрата и крестика), дописать поддержку остальных легко, за константами обращайтесь к devkitPSPpspsdkincludepspctrl.h. Код в цикле будет выводить нечто такое:

TimeStamp 68832112 | Pressed NONE (0) | Stick: 126:150
TimeStamp 72317982 | Pressed TRIANGLE CIRCLE (12288) | Stick: 119:167


Итак, компилируйте весь полученный код:



#include

#include

#include


PSP_MODULE_INFO("Hello World", 0, 1, 1);

int ExitCallback(int Arg1, int Arg2, void *Common)
{
sceKernelExitGame();
return 0;
}

int CallbackThread(SceSize Args, void *Argp)
{
int CallbackId;

CallbackId = sceKernelCreateCallback("Exit Callback", ExitCallback, NULL);
sceKernelRegisterExitCallback(CallbackId);

sceKernelSleepThreadCB();

return 0;
}

int SetupCallbacks(void)
{
int ThreadId = 0;

ThreadId = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if (ThreadId >= 0)
{
sceKernelStartThread(ThreadId, 0, 0);
}

return ThreadId;
}

SceCtrlData pad; // переменная, где хранится информация о состоянии кнопок (нажаты/не нажаты).

int main(int argc, char ** argv)
{
pspDebugScreenInit();
SetupCallbacks();

sceCtrlSetSamplingCycle(0);
sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG); // настраиваем на прием информации о положении стика

while(1) // главный цикл программы
{
sceCtrlReadBufferPositive(&pad, 1); // читаем содержимое буфера э-э клавиатуры
pspDebugScreenPrintf("TimeStamp %i | Pressed: ", pad.TimeStamp); // выводим TimeStamp
if (pad.Buttons == 0) // ничего не нажато
{
pspDebugScreenPrintf("NONE ");
} else {
if (pad.Buttons & PSP_CTRL_TRIANGLE) pspDebugScreenPrintf("TRIANGLE ");
if (pad.Buttons & PSP_CTRL_CIRCLE) pspDebugScreenPrintf("CIRCLE ");
if (pad.Buttons & PSP_CTRL_CROSS) pspDebugScreenPrintf("CROSS ");
if (pad.Buttons & PSP_CTRL_SQUARE) pspDebugScreenPrintf("SQUARE ");
// какие кнопки нажаты?
}
pspDebugScreenPrintf("(%i) | Stick: %i:%in", pad.Buttons, pad.Lx, pad.Ly);
// выводим координаты стика
}

sceKernelSleepThread();

return 0;
}


Теперь преобразовывайте в EBOOT, закидывайте на приставку и наслаждайтесь. Как домашнее задание можно попробовать сделать бродилку, или еще какую-нибудь невероятно полезную штуку; я думаю, что посвящу третюю часть всяким прочим фичам text mode, а потом перейду к графике. Удачи!
Наверх 
Ссылка на пост #8 Добавлено: 11 мая 2008 00:10    

Посетители
MIK1993
--

Возраст: 28 | | Дева
Сообщений: 211
Благодарности: 7 / 88
Репутация: 0
Предупреждений: 0
Друзья
Тут: 14 лет 10 месяцев
а зачем это?
ICQ: 560467718
Наверх 
Ссылка на пост #9 Добавлено: 11 мая 2008 00:19    

Забанен
LIon__
--

Возраст: 29 | | Рыбы
Сообщений: 377
Благодарности: 22 / 55
Репутация: 9
Предупреждений: 1
Друзья
Тут: 14 лет 7 месяцев
MIK1993,
ето тем хто программы пишет на зызку, уроки:)



Весь код, написанный ранее, но с подробными комментариями.




// каллбеки и прочие необходимые для работы программы вещи
// нечто вроде windows.h ;-)
#include


// как ни странно, почти все функции для работы в текстовом режиме находятся именно там
#include


// получение информации о состоянии кнопок и положении джойстика
#include


// некий код на ассемблере, необходимый для индентификации программы или модуля системой
PSP_MODULE_INFO("Hello World", 0, 1, 1);

// будет вызываться при закрытии программы, смотри функцию CallbackThread
int ExitCallback(int Arg1, int Arg2, void *Common)
{
// "уходя - уходи"
// ну, то есть закрывает программу
// если не вставить эту строку, то при попытке закрыть игру через кнопку HOME
// система зависнет на надписи "Пожалуйста, подождите..."
// если решили попробовать ее не вставить, резет девайса произоводится
// путем перевода штуки справа в положение "Power" на несколько (около 7) секунд
// (пока лампочка не перестанет гореть). потом можно включать
sceKernelExitGame();
return 0;
}

// специальный поток
int CallbackThread(SceSize Args, void *Argp)
{
// тут будет храниться ID нашего каллбэка
// доступ к ним, значить, не по указателям всяким, а по номерам
int CallbackId;

// создаем некий каллбэк
// система еще не знает, что он для закрытия, название (первый аргумент) нужно,
// похоже, для статистики :)

CallbackId = sceKernelCreateCallback("Exit Callback", ExitCallback, NULL);

// регистрируем наш каллбэк как каллбэк для закрытия
sceKernelRegisterExitCallback(CallbackId);

// поток больше не нужем, ложимся спать
sceKernelSleepThreadCB();

return 0;
}

// вопреки названию, в этой функции не создаются каллбэки, а создается поток,
// выполняющий эту черную работу
int SetupCallbacks(void)
{
// опять же, доступ к потокам осуществляется по ID
int ThreadId = 0;

// Создаем поток. На имя всем наплевать, второй аргумент это функция
// выполняемая потоком, третий - приоритет (меньше - приоритетнее),
// четвертый - изначальный размер стека, потом идут аттрибуты и опции
// на них нам плевать пока что, это вообще для отдельного туториала тема :)
ThreadId = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if (ThreadId >= 0) // если создался, то запускаем
{
sceKernelStartThread(ThreadId, 0, 0);
// первый параметр - ID потока, второй - размер передаваемых функции аргументов,
// указатель на которые содержится в третьем аргументе
}

return ThreadId;
}

SceCtrlData pad; // переменная, где хранится информация о состоянии кнопок (нажаты/не нажаты).

int main(int argc, char ** argv)
{
// текстовый режим 34*68
pspDebugScreenInit();

// устанавливаем каллбеки
// пока еще - только один (закрывания)
SetupCallbacks();

sceCtrlSetSamplingCycle(0);
sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG); // настраиваем на прием информации о положении стика

while(1) // главный цикл программы
{
pspDebugScreenClear(); // чистим экран
sceCtrlReadBufferPositive(&pad, 1); // читаем содержимое буфера э-э клавиатуры
pspDebugScreenPrintf("TimeStamp %i | Pressed: ", pad.TimeStamp); // выводим TimeStamp
if (pad.Buttons == 0) // ничего не нажато
{
pspDebugScreenPrintf("NONE ");
} else {
if (pad.Buttons & PSP_CTRL_TRIANGLE) pspDebugScreenPrintf("TRIANGLE ");
if (pad.Buttons & PSP_CTRL_CIRCLE) pspDebugScreenPrintf("CIRCLE ");
if (pad.Buttons & PSP_CTRL_CROSS) pspDebugScreenPrintf("CROSS ");
if (pad.Buttons & PSP_CTRL_SQUARE) pspDebugScreenPrintf("SQUARE ");
// какие кнопки нажаты?
}
pspDebugScreenPrintf("(%i) | Stick: %i:%in", pad.Buttons, pad.Lx, pad.Ly);
// выводим координаты стика
}

sceKernelSleepThread();
// поток засыпает
// если уснули все потоки, то единственное, что может случиться - это каллбек
// в этой программе эта строчка никогда не выполнится ;)

return 0;
}


Добавлено спустя 3 минуты 46 секунд:

НЕ могу написать нормально!! Powered by TWSF 1.6 Воспринимает как скрипт!!!!!!!!
/*

*/

Сообщение отредактировано 11 мая 2008 00:17. Редактировалось 1 раз(а)
Наверх 
Ссылка на пост #10 Добавлено: 18 мая 2008 13:58    

Посетители
pspalexx
--

Возраст: 34 | | Лев
Сообщений: 57
Благодарности: 0 / 1
Репутация: 0
Предупреждений: 0
Друзья
Тут: 14 лет 6 месяцев
Тема умерла?
Наверх 
Ссылка на пост #11 Добавлено: 19 мая 2008 14:34    

Посетители
MIK1993
--

Возраст: 28 | | Дева
Сообщений: 211
Благодарности: 7 / 88
Репутация: 0
Предупреждений: 0
Друзья
Тут: 14 лет 10 месяцев
LIon__,
хоть я ниче не понимаю, но молодца
ICQ: 560467718
Наверх 
Ссылка на пост #12 Добавлено: 29 мая 2008 19:18    

Забанен
LIon__
--

Возраст: 29 | | Рыбы
Сообщений: 377
Благодарности: 22 / 55
Репутация: 9
Предупреждений: 1
Друзья
Тут: 14 лет 7 месяцев
MIK1993,
Весело
Наверх 
Ссылка на пост #13 Добавлено: 17 сентября 2008 16:20    

Посетители
3bl3gamer
--

Возраст: 29 | | Телец
Сообщений: 21
Благодарности: 0 / 0
Репутация: 2
Предупреждений: 0
Друзья
Тут: 14 лет 7 месяцев
а естьь разница между if (pad.Buttons == 0) и if (pad.Buttons = 0)
Наверх 
Ссылка на пост #14 Добавлено: 17 сентября 2008 16:55    

Посетители
.:Witcher:.
--

Возраст: 29 | | Рыбы
Сообщений: 101
Благодарности: 0 / 56
Репутация: 15
Предупреждений: 0
Друзья
Тут: 13 лет 11 месяцев
3bl3gamer,
да!!
== это знак равенства, можно сказать что если перевести человечески языком то
if (pad.Buttons == 0) переводится как:
если pad.Buttons ровняется нулю, то....
ICQ: 9287678
Наверх 
Ссылка на пост #15 Добавлено: 17 сентября 2008 22:35    

Посетители
DarkMedveD
--

Возраст: 28 | | Стрелец
Сообщений: 64
Благодарности: 5 / 2
Репутация: 2
Предупреждений: 0
Друзья
Тут: 13 лет 11 месяцев
Послушай,а какие языки кроме С ещё привлечь можно,просто я Blitz знаю в совершенстве...
ICQ: DarkMedveD
Наверх 
программирование для psp
  • 85

  
Добавить эту тему в

Похожие темы:
Название Темы [ответов]АвторДатаФорум
» 3D программирование [10]zharikov.vitalik17.06.12Клуб PSPinfo.RU »» Программирование
» Программирование с QT [5]vadik0530.05.11Клуб PSPinfo.RU »» Программирование
» программирование [3]zlost04.09.08PSP »» Софт для PSP
» Программирование для PSP Часть 2 [3]MALEXKIY10.11.12Клуб PSPinfo.RU »» Программирование
» Кто может? [16]
  программирование
nikita1996spb26.08.11Клуб PSPinfo.RU »» Болталка
» Программирование PSP Часть 5 [3]
  Графика
MALEXKIY31.12.12Клуб PSPinfo.RU »» Программирование
» Программирование для PSP Часть 3 [7]
  Теория
MALEXKIY12.11.12Клуб PSPinfo.RU »» Программирование
» Программирование для PSP Часть 4 [2]
  Переменные, цветной текст
MALEXKIY16.12.12Клуб PSPinfo.RU »» Программирование
» Программирование для PSP [3]
  Здесь я постараюсь научить Вас программировать для PSP на C++.
MALEXKIY09.11.12Клуб PSPinfo.RU »» Программирование
» Программирование для PSP ФОРУМ [21]
  Задавайте вопросы, делитесь наработками!
MALEXKIY12.11.12Клуб PSPinfo.RU »» Программирование

Информация
Посетители, находящиеся в группе Гости, не могут оставлять сообщения в данной теме.


Flash игры onLine |  Игры для PSP |  Обои для PSP |  Софт для PSP |  Темы для PSP |  Сейвы для PSP |  Комиксы для PSP |  Форум |  Карта сайта |   
"" and "PlayStation" are registered trademarks of Sony Computer Entertainment Inc. "", PSP and "UMD" are trademarks of Sony Computer Entertainment Inc. "", "XMB", "Memory Stick Duo" and the "Memory Stick Duo" logotype are trademarks of Sony Corp. All product titles, publisher names, trademarks, artwork and associated imagery are trademarks, registered trademarks and/or copyright material of the respective owners. All rights reserved.
Game's TOP-100 Counter