Jump to content

Recommended Posts

  • Replies 61
  • Created
  • Last Reply

Top Posters In This Topic

Posted

jo ja ... tady je takovy bludiště (to sem vždycky ukazoval misto hello world, nejen na PSP ale aji na PC)

http://www.zdoom.ic.cz/bludiste.rar - kdyby to najednou nejelo tak počkejte, posledi dobou IC.CZ blbne

pravě pracuju na nove hře WideMind, jedna se o totalni změnu zdrojovyho kodu PSP DOOMa ... no samozdřejmě aji totalni změnu obrazku zbrani atd... (a přiběh)

a tady zdrojak bludiště:

#include <pspkernel.h>
#include <pspdebug.h>
#include <pspdisplay.h>
#include <pspctrl.h>
#include <stdio.h> 
#include <stdlib.h>
PSP_MODULE_INFO("Bludiste by kgsws", 0, 1, 1);
#define printf pspDebugScreenPrintf
#define charto pspDebugScreenPutChar
#define color pspDebugScreenSetTextColor
#define backcolor pspDebugScreenSetBackColor
#define Ceklic 1
#define Zeklic 2
#define Moklic 4
#define Zlklic 8
#define Azklic 16
#define Puklic 32
FILE *soub;
char ch;
char levels[32];
int x,y,zmena,zx,zy,konec,i,mx,my,klice,level;
char pole[]="********           *"
           "    Testovaci      *"
           "      #Mapa        *"
           "**   # #           *"
           "    #  #           *"
           "   #  *            *"
           "   #   *        *  *"
           "    *%%*       *%* *"
           "*****%%*********%***"
           "*               A  *"
           "*              A2A *"
           "*  +           BA  *"
           "*             B3B  *"
           "*             CB   *"
           "*            C4C   *"
           "*            DC    *"
           "*****%%     D5D   F*"
           "#     %     ED   F *"
           "#1    *    E6E  F G*"
           "######**************";
SceCtrlData pad;
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
         konec=3;
         return 0;
}

/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
         int cbid;

         cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
         sceKernelRegisterExitCallback(cbid);

         sceKernelSleepThreadCB();

         return 0;
}

/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
         int thid = 0;

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

         return thid;
}

int main() {
x=1;
zmena=1;
level=1;
SetupCallbacks();
pspDebugScreenInit();
pspDebugScreenSetXY(1,0);
color(0x00FFFF);
backcolor(0x0088FF);
printf("                          Bludiste by kgsws                       ");
color(0xFFFFFF);
backcolor(0x000000);
pspDebugScreenSetXY(1,2);
printf("Level: %d",level);
while(konec==0){
sceCtrlReadBufferPositive(&pad, 1);
if(pad.Buttons & PSP_CTRL_DOWN) {
x++;
zmena=1;
}
if(pad.Buttons & PSP_CTRL_UP) {
x--;
zmena=1;
}
if(pad.Buttons & PSP_CTRL_CROSS) {
if(x==1) {
// ----------------------------------------------------------- HRA {
sprintf(levels,"level%d.dat",level);
soub = fopen(levels, "rb");
if(soub != NULL) {
x=0;
while(x!=20*20-1) {
ch=fgetc(soub);
pole[x]=ch;
x++;
}
fclose(soub);
x=1;
y=1;
zmena=1;
konec=0;
my=1;
pspDebugScreenClear();
color(0x008800);
backcolor(0x005555);
pspDebugScreenSetXY(1,0);
printf("                           Level:                                ");
pspDebugScreenSetXY(35,0);
printf("%d",level);
backcolor(0x000000);
color(0xFFFFFF);
pspDebugScreenSetXY(2,3);
printf("Klice:");
while(my!=21){
mx=1;
while(mx!=21){
if(pole[(mx-1)+(my-1)*20]=='+'){
 x=mx*8+20*8;
 y=my*8+8*8;
 }else if(pole[(mx-1)+(my-1)*20]=='*'){
 charto(mx*8+20*8,my*8+8*8,0xFFFFFF,219);
 }else if(pole[(mx-1)+(my-1)*20]=='A'){
 charto(mx*8+20*8,my*8+8*8,0x000088,219);
 }else if(pole[(mx-1)+(my-1)*20]=='B'){
 charto(mx*8+20*8,my*8+8*8,0x008800,219);
 }else if(pole[(mx-1)+(my-1)*20]=='C'){
 charto(mx*8+20*8,my*8+8*8,0x880000,219);
 }else if(pole[(mx-1)+(my-1)*20]=='D'){
 charto(mx*8+20*8,my*8+8*8,0x008888,219);
 }else if(pole[(mx-1)+(my-1)*20]=='E'){
 charto(mx*8+20*8,my*8+8*8,0x888800,219);
 }else if(pole[(mx-1)+(my-1)*20]=='F'){
 charto(mx*8+20*8,my*8+8*8,0x880088,219);
 }else if(pole[(mx-1)+(my-1)*20]=='1'){
 charto(mx*8+20*8,my*8+8*8,0x0000FF,'*');
 }else if(pole[(mx-1)+(my-1)*20]=='2'){
 charto(mx*8+20*8,my*8+8*8,0x00FF00,'*');
 }else if(pole[(mx-1)+(my-1)*20]=='3'){
 charto(mx*8+20*8,my*8+8*8,0xFF0000,'*');
 }else if(pole[(mx-1)+(my-1)*20]=='4'){
 charto(mx*8+20*8,my*8+8*8,0x00FFFF,'*');
 }else if(pole[(mx-1)+(my-1)*20]=='5'){
 charto(mx*8+20*8,my*8+8*8,0xFFFF00,'*');
 }else if(pole[(mx-1)+(my-1)*20]=='6'){
 charto(mx*8+20*8,my*8+8*8,0xFF00FF,'*');
 }else if(pole[(mx-1)+(my-1)*20]=='%'){
 charto(mx*8+20*8,my*8+8*8,0xFFFFFF,219);
 }else if(pole[(mx-1)+(my-1)*20]=='#'){
 }else if(pole[(mx-1)+(my-1)*20]=='G'){
 charto(mx*8+20*8,my*8+8*8,0x0088FF,219);
 }else charto(mx*8+20*8,my*8+8*8,0xFFFFFF,pole[(mx-1)+(my-1)*20]);
mx++;
}
my++;
}
zx=1;
zy=30;
klice=0;
while(konec==0) {
sceCtrlReadBufferPositive(&pad, 1);
if(pad.Buttons & PSP_CTRL_START) {
konec=1;
}
if(pad.Buttons & PSP_CTRL_UP) {
zy=y;
zx=x;
y=y-8;
zmena=1;
}
if(pad.Buttons & PSP_CTRL_DOWN) {
zy=y;
zx=x;
y=y+8;
zmena=1;
}
if(pad.Buttons & PSP_CTRL_LEFT) {
zy=y;
zx=x;
x=x-8;
zmena=1;
}
if(pad.Buttons & PSP_CTRL_RIGHT) {
zy=y;
zx=x;
x=x+8;
zmena=1;
}
if(zmena==1){
zmena=0;
if(x<1) x=1;
if(y<1) y=1;
if(x>473) x=473;
if(y>265) y=265;
mx=(x-20*8)/8;
my=(y-8*8)/8;
if(pole[(mx-1)+(my-1)*20]=='*'){
x=zx;
y=zy;
}
if(pole[(mx-1)+(my-1)*20]=='A'){
if(klice & Ceklic) {
pole[(mx-1)+(my-1)*20]=' ';
} else {
x=zx;
y=zy;
}
}
if(pole[(mx-1)+(my-1)*20]=='B'){
if(klice & Zeklic) {
pole[(mx-1)+(my-1)*20]=' ';
} else {
x=zx;
y=zy;
}
}
if(pole[(mx-1)+(my-1)*20]=='C'){
if(klice & Moklic) {
pole[(mx-1)+(my-1)*20]=' ';
} else {
x=zx;
y=zy;
}
}
if(pole[(mx-1)+(my-1)*20]=='D'){
if(klice & Zlklic) {
pole[(mx-1)+(my-1)*20]=' ';
} else {
x=zx;
y=zy;
}
}
if(pole[(mx-1)+(my-1)*20]=='E'){
if(klice & Azklic) {
pole[(mx-1)+(my-1)*20]=' ';
} else {
x=zx;
y=zy;
}
}
if(pole[(mx-1)+(my-1)*20]=='F'){
if(klice & Puklic) {
pole[(mx-1)+(my-1)*20]=' ';
} else {
x=zx;
y=zy;
}
}
if(pole[(mx-1)+(my-1)*20]=='1'){
pole[(mx-1)+(my-1)*20]=' ';
pspDebugScreenSetXY(9,3);
color(0x0000FF);
printf("*");
klice=klice+1;
}
if(pole[(mx-1)+(my-1)*20]=='2'){
pole[(mx-1)+(my-1)*20]=' ';
pspDebugScreenSetXY(11,3);
color(0x00FF00);
printf("*");
klice=klice+2;
}
if(pole[(mx-1)+(my-1)*20]=='3'){
pole[(mx-1)+(my-1)*20]=' ';
pspDebugScreenSetXY(13,3);
color(0xFF0000);
printf("*");
klice=klice+4;
}
if(pole[(mx-1)+(my-1)*20]=='4'){
pole[(mx-1)+(my-1)*20]=' ';
pspDebugScreenSetXY(15,3);
color(0x00FFFF);
printf("*");
klice=klice+8;
}
if(pole[(mx-1)+(my-1)*20]=='5'){
pole[(mx-1)+(my-1)*20]=' ';
pspDebugScreenSetXY(17,3);
color(0xFFFF00);
printf("*");
klice=klice+16;
}
if(pole[(mx-1)+(my-1)*20]=='6'){
pole[(mx-1)+(my-1)*20]=' ';
pspDebugScreenSetXY(19,3);
color(0xFF00FF);
printf("*");
klice=klice+32;
}
if(pole[(mx-1)+(my-1)*20]=='#'){
charto(x,y,0xFFFFFF,219);
x=zx;
y=zy;
pole[(mx-1)+(my-1)*20]='*';
}
if(pole[(mx-1)+(my-1)*20]=='G'){
konec=2;
level++;
}
charto(zx,zy,0x000000,32);
charto(x,y,0x0088FF,1);
for(i=0; i<10; i++) {
sceDisplayWaitVblankStart();
}
}
}
pspDebugScreenClear();
pspDebugScreenSetXY(1,0);
color(0x00FFFF);
backcolor(0x0088FF);
printf("                          Bludiste by kgsws                       ");
color(0xFFFFFF);
backcolor(0x000000);
pspDebugScreenSetXY(1,2);
printf("Level: %d",level);
if(konec!=3) konec=0;
zmena=1;
x=1;
} else {
pspDebugScreenSetXY(20,20);
color(0x0000FF);
printf("soubor level%d.dat nenalezen!",level);
color(0xFFFFFF);
}
// ----------------------------------------------------------- HRA }
}
if(x==2) 
{
pspDebugScreenSetXY(25,20);
soub = fopen("save.dat", "rb");
if(soub != NULL){
ch=fgetc(soub);
level = ch;
if(level!=-1){
zmena=1;
color(0x00FF00);
printf("   Nacteno ...");
color(0xFFFFFF);
pspDebugScreenSetXY(1,2);
printf("Level: %d",level);
} else {
color(0x0000FF);
printf("Chyba v souboru!         ");
color(0xFFFFFF);
}
fclose(soub);
} else {
color(0x0000FF);
printf("Nic neni ulozeno!        ");
color(0xFFFFFF);
}
}
if(x==3) {
pspDebugScreenSetXY(25,20);
soub = fopen("save.dat", "wb");
if(soub != NULL){
fputc(level,soub);
fclose(soub);
color(0x00FF00);
printf("       Ulozeno ...       ");
color(0xFFFFFF);
} else {
color(0x0000FF);
printf("Nelze vytvorit soubor!   ");
color(0xFFFFFF);
}
}
if(x==4) konec=3;
}
if(zmena==1){
if(x<1) x=1;
if(x>4) x=4;
pspDebugScreenSetXY(29,10);
if(x==1){
color(0x0088FF);
}else{
color(0x005599);
}
if(level==1){
printf(" Nova hra ");
} else {
printf("Pokracovat");
}
pspDebugScreenSetXY(29,11);
if(x==2){
color(0x0088FF);
}else{
color(0x005599);
}
printf("  Nacist  ");
pspDebugScreenSetXY(29,12);
if(x==3){
color(0x0088FF);
}else{
color(0x005599);
}
printf("  Ulozit  ");
pspDebugScreenSetXY(29,13);
if(x==4){
color(0x0088FF);
}else{
color(0x005599);
}
printf("  Konec   ");
for(i=0; i<5; i++) {
sceDisplayWaitVblankStart();
}
}
}
color(0x00FFFF);
backcolor(0x000000);
pspDebugScreenClear();
pspDebugScreenSetXY(29,15);
printf("ukoncovani");
sceKernelExitGame();
return 0;
}

jo a klidně si mužete udělat novy kola ... stači přidat dalši level-soubory no a obsah neni těžky zjistit ;) (počet levelu neomezen, vždy pole 20x20)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Privacy Policy