Marce_82 nos acerca un Sample, o ejemplo de codigo, para que veais como crear un menu en lenguaje C para PSP. Util si sois programadores, o quereis aventuraros a crear vuestro propio Homebrew.
Sample Menu Basico
Código:
/************************************************************* * * * Name: Sample Menu * * Author: Xcorpia & Marce82 * * Web-Site: marce82projects.blogspot.com * * * *************************************************************/ // Libreria a Incluir Necesarias #include <pspsdk> #include <pspkernel> #include <psppower> #include <pspctrl> #include <pspdisplay> #include <pspdebug> PSP_MODULE_INFO("Sample Menu", 0, 1, 0); PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER); SceCtrlData currentPad, lastPad; int opcion = 1; int down = 1; int up = 1; void Menu_A() { opcion = 1; down = 1; up = 1; pspDebugScreenClear(); pspDebugScreenSetTextColor(0xFF0000); pspDebugScreenPrintf("\n Sample Menu By Xcorpia & Marce82\n\n\n"); pspDebugScreenSetTextColor(0xFFFFFF); pspDebugScreenPrintf(" Seleccione una Opcion:\n\n"); pspDebugScreenSetTextColor(0x0000FF); pspDebugScreenPrintf(" -> Opcion 1\n"); pspDebugScreenSetTextColor(0xFFFFFF); pspDebugScreenPrintf(" -> Opcion 2\n\n"); pspDebugScreenSetTextColor(0xFFFFFF); pspDebugScreenPrintf(" -> Salir\n\n\n"); pspDebugScreenSetTextColor(0x00FF00); pspDebugScreenPrintf(" Pulse X para selecionar la opcion"); } void Menu_B() { opcion = 2; down = 2; up = 2; pspDebugScreenClear(); pspDebugScreenSetTextColor(0xFF0000); pspDebugScreenPrintf("\n Sample Menu By Xcorpia & Marce82\n\n\n"); pspDebugScreenSetTextColor(0xFFFFFF); pspDebugScreenPrintf(" Seleccione una Opcion:\n\n"); pspDebugScreenPrintf(" -> Opcion 1\n"); pspDebugScreenSetTextColor(0x0000FF); pspDebugScreenPrintf(" -> Opcion 2\n\n"); pspDebugScreenSetTextColor(0xFFFFFF); pspDebugScreenPrintf(" -> Salir\n\n\n"); pspDebugScreenSetTextColor(0x00FF00); pspDebugScreenPrintf(" Pulse X para selecionar la opcion"); } void Menu_C() { opcion = 3; down = 3; up = 3; pspDebugScreenClear(); pspDebugScreenSetTextColor(0xFF0000); pspDebugScreenPrintf("\n Sample Menu By Xcorpia & Marce82\n\n\n"); pspDebugScreenSetTextColor(0xFFFFFF); pspDebugScreenPrintf(" Seleccione una Opcion:\n\n"); pspDebugScreenPrintf(" -> Opcion 1\n"); pspDebugScreenSetTextColor(0xFFFFFF); pspDebugScreenPrintf(" -> Opcion 2\n\n"); pspDebugScreenSetTextColor(0x0000FF); pspDebugScreenPrintf(" -> Salir\n\n\n"); pspDebugScreenSetTextColor(0x00FF00); pspDebugScreenPrintf(" Pulse X para selecionar la opcion"); } void Opcion_A() { pspDebugScreenClear(); pspDebugScreenSetTextColor(0x00FF00); pspDebugScreenPrintf("\n Define aqui tu Opcion 1"); sceKernelDelayThread(2*1000*1000); Menu_A(); } void Opcion_B() { pspDebugScreenClear(); pspDebugScreenSetTextColor(0x00FF00); pspDebugScreenPrintf("\n Define aqui tu Opcion 2"); sceKernelDelayThread(2*1000*1000); Menu_A(); } void Opcion_C() { pspDebugScreenSetTextColor(0x00FF00); pspDebugScreenPrintf("\n\n Saliendo... Espere..."); sceKernelDelayThread(2*1000*1000); sceKernelExitGame(); } int main() { sceCtrlReadBufferPositive(&lastPad, 1); pspDebugScreenInit(); Menu_A(); while(1) { sceCtrlReadBufferPositive(¤tPad, 1); if( currentPad.Buttons != lastPad.Buttons ) { lastPad = currentPad; if(currentPad.Buttons & PSP_CTRL_DOWN) { switch(down) { case 1: Menu_B(); break; case 2: Menu_C(); break; case 3: Menu_A(); break; } } if(currentPad.Buttons & PSP_CTRL_UP) { switch(up) { case 1: Menu_C(); break; case 2: Menu_A(); break; case 3: Menu_B(); break; } } } if(currentPad.Buttons & PSP_CTRL_CROSS) { switch(opcion) { case 1: Opcion_A(); break; case 2: Opcion_B(); break; case 3: Opcion_C(); break; } } } }
Código:
TARGET = SampleMenu OBJS = menu.o INCDIR = CFLAGS = -O2 -G0 -Wall CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti ASFLAGS = $(CFLAGS) LIBDIR = LDFLAGS = LIBS = EXTRA_TARGETS = EBOOT.PBP PSP_EBOOT_TITLE = Sample Menu PSPSDK=$(shell psp-config --pspsdk-path) include $(PSPSDK)/lib/build.mak
Descargar Sample de menu (solo usuarios registrados)
Comentarios
lleno de erroress!!!... para
lleno de erroress!!!... para un menu tan simple :S:S:S:S
este amm hay un error
asi esta en la noticia y esta mal
y debe ir asi
otro es este
y deberia ir asi
xDDDD
En la segunda libreria que fue la que corregi hay otro error xD fue error de dedo es
#include <pspkernel.h>
y no con .hl xDDDD perdon
y editen el post
Saludos
ipn2
jaja xD neta de primera vista
jaja xD neta de primera vista no me di cuenta de la falta en las librerias xD
y en el segundo jejeje saludos ipn2 :D
¬¬'
Hay que leer amigo xD y ps igual y sea una trampilla por ahi para que la gente lea bien xD aunque no creo ¬¬
jajaja neta siempre leo bien
jajaja neta siempre leo bien pero esta ves se me fue xD u.u
aunque bueno somos humanos y cometemos errores que el haya cometido uno(weno varios xD) pues nimodo aunque si seria bueno que editaran el pozt para que los demas user no les pase lo que a mi xD que por no leer bien xD hubo muchos errores saluds
TEAM MEX Homebrew y desarrollo PSP
Metal TrooperV.Pre-Alpha (15%)Lua , 10% C .
Ubunshell VProof. (45%)C
RPG Magues (35%)Lua , 5% C
Android development for Xperia X8 ^^ mis roms en XDA-Developers ya que en Scenebeta no las publican xD
Xperience | MIUI Pikachu | Semc debrand engine | Froyexp | Xperience walkman mod | Android 4.0.4 CN9 Crema de nieve
-- KLOZZ
este si men
pero lo gracioso de esto es que lleva años y nadie lo habia notado xDDDDD
y si espero editen el post
woow gracias por el tuto
woow gracias por el tuto
HOLA...
Como hago para poder cambiar los codigos?? para los archivos .c como???
y como copio y pego el codigo en lo de simbolo de sistema?? tengo el win vista
¡¡Feliz Navidad y Prospero Año Nuevo!!
UNA DUDA
Si yo quiero que dentro de opcion_a (por ejemplo) haya otro menu como seria esto?
gracias
saludos
No se podría...
No es uqe sea muy experimentado en C, pero no se podria mejor poner una variable con el numero de seleccion del menu que vaya cambiando segun se pulse el Pad y con una sola funcion de imprimir el menu que en cada opcion con un simple "If" decida si poner color resaltado o no?
es una opinion nada mas.... para ahorrar lineas de codigo sin complicarlo demasiado. Corregidme si me equivoco.
Aún así esta muy bien explicado =)
Un saludo
Así sería mejor...
Tienes razón, igual que tu creo que sería mejor así, poner un parámetro en la función en la que se indique cuál debe ser selccionado, como ejemplo, algo así:
void Menu(int optColor)
{
pspDebugScreenClear();
pspDebugScreenSetTextColor(0xFF0000);
pspDebugScreenPrintf("\n Sample Menu By Xcorpia & Marce82\n\n\n");
pspDebugScreenSetTextColor(0xFFFFFF);
pspDebugScreenPrintf(" Seleccione una Opcion:\n\n");
// Para la Opción 1
if(optColor == 1)
pspDebugScreenSetTextColor(0x0000FF);
else
pspDebugScreenSetTextColor(0xFFFFFF);
pspDebugScreenPrintf(" -> Opcion 1\n");
// Para la Opción 2
if(optColor == 2)
pspDebugScreenSetTextColor(0x0000FF);
else
pspDebugScreenSetTextColor(0xFFFFFF);
pspDebugScreenPrintf(" -> Opcion 2\n\n");
// Para la Opción 3
if(optColor == 3)
pspDebugScreenSetTextColor(0x0000FF);
else
pspDebugScreenSetTextColor(0xFFFFFF);
pspDebugScreenPrintf(" -> Salir\n\n\n");
pspDebugScreenSetTextColor(0x00FF00);
pspDebugScreenPrintf(" Pulse X para selecionar la opcion");
}
Claro, esto ya es solo optimización del código, aún así muy bueno =), saludos! ^^
Esta bien, no esta nada mal,
Esta bien, no esta nada mal, pero no es C++ (como pone la intro) es simplemente C. :)
Salu
Por lo que yo se
C y C++ son lo mismo, solo que en C++ estan disponibles las funciones booleanas. Corrigeme si me equivoco, y lo modifico ;-)
.
Te equivocas
c y c++ son casi lo mismo, ambos tienen booleanos, pero c++ esta orientado a objetos (clases instancias y demás)
Mmmm...
ahora si que me habeis picado xD. He dado un añito en la universidad de C++, y no he usado para nada objetos.
Para mi, un lenguaje orientado a objetos, es Java. Si con C no puedes usar objetos, y con C++ puedes usarlos o no opcionalmente...a mi modo de ver es lo mismo (un codigo de C, funcionara en C++ con minimas modificaciones, pero podria no ocurrir al reves).
No obstante, como dois dos contra uno, lo cambio ahora mismo ;-). Un saludo coders.
Para recibir ayuda más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda revisar el Manual del perfecto forero y las Normas de la Comunidad.
Ademas de los objetos C++
Ademas de los objetos C++ tiene varias mejoras con respecto a C, como la sobrecarga de funciones, definir variables en cualquier lado(pe for (int i; ...)) y otras muchas cosas.
Pero el C+++ se invento porque el C se hizo muy popular y los programadores necesitabann "ganar mas pasta" currando menos, asi que lo que en C hacen dos personas en un mes, en c++ necesita 7personas y 4 meses.
Coñas aparte a la que un proyecto crece mucho el C++ se hace casi imprescindible .
:P
y no usaste el
extern "C" {
en c++?
es una forma de saltarse la orietación
Nah
solo funciones. Creo que los objetos en C++ se definen con "class", palabra tabu aquel año xD.
joder, ya me he mareado,
joder, ya me he mareado, xD