I created Simon the memory game for prizm using pSDL to show the basics of what it can currently do(I'm working on image loading and I may be able to finish before I leave tomorrow).
At the first menu heres what you can do
Press 1 to start it with text at the bottom for which arrow it maps to
press AC/ON to start without the help
press esc to exit

while it is running it will who each color/help if you enabled it for 3/4 of a second and then once all are shown it will go to black and you can start inputing arrows and the screen will change to the appropriate color
if you manage to get to 25 correct you win(the game)

My code is not exactly the best example of SDL code but here it is...

Code:

#include <SDL.h>
#include <fxcg_syscalls.h>
#include <fxcg/display.h>
#include <stdlib.h>
#include <string.h>

static unsigned long next = 1;
/* RAND_MAX assumed to be 32767 */
int sys_rand(void) {
    next = next * 1103515245 + 12345;
    return((unsigned)(next/65536) % 32768);
}

void sys_srand(unsigned seed) {
    next = seed;
}


int main()
{
   SDL_Surface *screen;
   int i, j, k, width, height, bpp, done=0, printCase=0, win=1;
   SDL_Event event;
   SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER);
   width = 384;
   height = 216;
   bpp = 8;
   SDL_Color palette[5];
   palette[0].r=255; palette[1].g=0; palette[1].r=0;
   palette[1].r=0; palette[2].g=255; palette[2].b=0;
   palette[2].r=0; palette[3].g=0; palette[3].b=255;
   palette[3].r=255; palette[0].g=255; palette[0].b=255;
   palette[4].r=0; palette[4].g=0; palette[4].b=0;
   screen = SDL_SetVideoMode(width, height, bpp, SDL_SWSURFACE);
   SDL_SetColors(screen, palette, 0, 4);
   if (screen == NULL) return -1;
   SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
   SDL_UpdateRect(screen, 0, 0, 0, 0);
   PrintXY(1, 1, "XXPress AC/ON to start", 0x20, TEXT_COLOR_WHITE);
   PrintXY(1, 2, "XXPress Esc to Exit", 0x20, TEXT_COLOR_WHITE);
   PrintXY(1, 3, "XXPress 1 for help", 0x20, TEXT_COLOR_WHITE);
   Bdisp_PutDisp_DD();
   while (!done)
   {
      while(SDL_PollEvent(&event)) {
         if (event.type == SDL_KEYDOWN)
         {
            switch (event.key.keysym.sym)
            {
               case SDLK_ESCAPE:
                  return 0;
               
               case SDLK_POWER:
                  done = 1;
                  break;
               
               case SDLK_1:
                  printCase = 1;
                  done = 1;
                  break;
               
               default:
                  break;
            }
         }
      }
      if (SDL_GetTicks() > 10000) return 0;
    }
    SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 255, 255, 255));
    SDL_UpdateRect(screen, 0, 0, 0, 0);
    unsigned char set[25];
    unsigned char choice[25];
    sys_srand(SDL_GetTicks());
    for ( i=0; i<25; i++)
    {
      set[i] = sys_rand() % 4;
   }
   for (i=0; i<25; i++)
   {
      for (j=0; j<i; j++)
      {
         memset(screen->pixels, set[j], width*height);
         SDL_UpdateRect(screen, 0, 0, 0, 0);
         if (set[j] > 3)
            return -1;
         if (printCase)
         {
            switch (set[j])
            {
               case 0:
                  PrintXY(18, 7, "XXUP", 0, TEXT_COLOR_BLACK);
                  break;
               
               case 1:
                  PrintXY(16, 7, "XXRIGHT", 0, TEXT_COLOR_BLACK);
                  break;
               
               case 2:
                  PrintXY(16, 7, "XXDOWN", 0, TEXT_COLOR_BLACK);
                  break;
                  
               case 3:
                  PrintXY(16, 7, "XXLEFT", 0, TEXT_COLOR_BLACK);
                  break;
            }
            Bdisp_PutDisp_DD();
         }
         SDL_Delay(750);
      }
      SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0,0,0));
      SDL_UpdateRect(screen, 0,0,0,0);
      k=0;
      while (k<i)
      {
         while(SDL_PollEvent(&event)) {
            if (event.type == SDL_KEYDOWN)
            {
               switch (event.key.keysym.sym)
               {
                  case SDLK_UP:
                     choice[k]=0;
                     memset(screen->pixels, 0, width*height);
                     SDL_UpdateRect(screen, 0, 0, 0, 0);
                     
                     k+=1;
                     break;
                     
                  case SDLK_RIGHT:
                     choice[k]=1;
                     memset(screen->pixels, 1, width*height);
                     SDL_UpdateRect(screen, 0, 0, 0, 0);
                     k+=1;
                     break;
                  
                  case SDLK_DOWN:
                     choice[k]=2;
                     memset(screen->pixels, 2, width*height);
                     SDL_UpdateRect(screen, 0, 0, 0, 0);
                     k+=1;
                     break;
                  
                  case SDLK_LEFT:
                     choice[k]=3;
                     memset(screen->pixels, 3, width*height);
                     SDL_UpdateRect(screen, 0, 0, 0, 0);
                     k+=1;
                     break;
                  
                  case SDLK_ESCAPE:
                     win=0;
                     i=100;
                     k=105;
                     break;
                     
                  
                  default:
                     break;
               }
            }
         }
      }
      for (j=0; j<i; j++)
      {
         if (set[j] != choice[j])
         {
            win=0;
            i=100;
         }
      }
   }
   SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
   SDL_UpdateRect(screen, 0, 0, 0, 0);
   if (win == 0) PrintXY(1, 1, "XXSorry You have lost", 0x20, TEXT_COLOR_WHITE);
   else PrintXY(1, 1, "XXYou have won the game!", 0x20, TEXT_COLOR_WHITE);
   Bdisp_PutDisp_DD();
   SDL_Delay(2000);
   return 0;
}

I cant figure out how to attach so here is the link to the omni attachment http://www.omnimaga.org/index.php?action=dlattach;topic=13899.0;attach=13107

EDIT: fixed error where esc could lock up calc
Cool!

So the library is ready for use?
pSDL works just it can't load bitmaps as the file i/o from stdlib is nonfunctional. I am trying to write a small set of functions to load images from arrays(like most prizm programs use) but right now my code seems to cause a blue shift in everything. Events also only recognize some keys because I use this algorithm for keygrabbing because its the only one that really works with SDL's setup http://prizm.cemetech.net/index.php?title=Debouncing_Multiple-Keypress_PRGM_GetKey

I'm going to post in pSDL for help on the image problem in a minute if you think you could help
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement