Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 ... 84 85 [86] 87 88 ... 91

Author Topic: Programming Help Thread (For Dummies)  (Read 100433 times)

cerapa

  • Bay Watcher
  • It wont bite....unless you are the sun.
    • View Profile
Re: Programming Help Thread (For Dummies)
« Reply #1275 on: June 27, 2014, 06:25:04 am »

Then pepper the program with things like:

cout << "Initializing [INSERT_THING_HERE]" << endl;
and
cout << "Doing [STUFF]" << endl;

or whatever your equivalent is, since you seem to be using printf(). If the program crashes, then the thing at fault is whatever the last thing it said was.
Logged

Tick, tick, tick the time goes by,
tick, tick, tick the clock blows up.

Valid_Dark

  • Bay Watcher
  • If you wont let me Dream, I wont let you sleep.
    • View Profile
Re: Programming Help Thread (For Dummies)
« Reply #1276 on: June 27, 2014, 03:27:42 pm »

Edit:

I've just about figured out SDL2,  I'm already liking it a lot more than SDL1.2
there was a dumb complaint in here about a bug in my code, but it was a stupid bug, so I deleted it.
« Last Edit: June 30, 2014, 05:47:47 am by Valid_Dark »
Logged
There are 10 types of people in this world. Those that understand binary and those that don't


Quote
My milkshake brings all the criminals to justice.

Skyrunner

  • Bay Watcher
  • ?!?!
    • View Profile
    • Portfolio
Re: Programming Help Thread (For Dummies)
« Reply #1277 on: June 30, 2014, 06:32:23 am »

What's so different about sdl2?
Logged

bay12 lower boards IRC:irc.darkmyst.org @ #bay12lb
"Oh, they never lie. They dissemble, evade, prevaricate, confoud, confuse, distract, obscure, subtly misrepresent and willfully misunderstand with what often appears to be a positively gleeful relish ... but they never lie" -- Look To Windward

Anvilfolk

  • Bay Watcher
  • Love! <3
    • View Profile
    • Portuguese blacksmithing forum!
Re: Programming Help Thread (For Dummies)
« Reply #1278 on: June 30, 2014, 09:59:41 am »

Somebody that knows more will likely be able to clarify further, but as far as I know it now contains quite more higher-level functionality, such as support for image rotation and stuff like that. Whereas previously it was all blit blit blit, cope them pixels straight!

This is where you'd look: https://wiki.libsdl.org/MigrationGuide#Overview_of_new_features

I think what I should said probably comes under the "Simple 2D rendering API that can use Direct3D, OpenGL, OpenGL ES, or software rendering behind the scenes" line :)

Valid_Dark

  • Bay Watcher
  • If you wont let me Dream, I wont let you sleep.
    • View Profile
Re: Programming Help Thread (For Dummies)
« Reply #1279 on: July 03, 2014, 12:59:04 am »

Now it handles hardware acceleration, and can make use of the graphics card. Instead of storing everything in the RAM and using the processor for everything, now it can store things in vRAM and use the GPU to do things.

There were a few things I found that weren't in the migration guide, I didn't write them down and don't remember what they are.

But I'm liking SDL2 so far from what I've seen from it,  CPU and RAM usage are down by a good amount.
took me like a week to learn it, and a few hours to transfer each program.  Still running into the occasional error when translating things over.

I still haven't worked out my new way of handling events yet,  the frustration of moving to a new library made me lose motivation, I'll probably work it out tonight.
Logged
There are 10 types of people in this world. Those that understand binary and those that don't


Quote
My milkshake brings all the criminals to justice.

Anvilfolk

  • Bay Watcher
  • Love! <3
    • View Profile
    • Portuguese blacksmithing forum!
Re: Programming Help Thread (For Dummies)
« Reply #1280 on: July 03, 2014, 10:38:53 am »

I had a great time learning SFML, which I found to be much more nicely organised in general than SDL, with a nicer API. It might be worth looking into it?

Moghjubar

  • Bay Watcher
  • Science gets you to space.
    • View Profile
    • Demon Legend
Re: Programming Help Thread (For Dummies)
« Reply #1281 on: July 03, 2014, 01:03:17 pm »

Valid_Dark: And... where exactly do you init SDL2?

Anyway, modification and threw in an actual init call: this runs (just getting window going)

Code: [Select]
#include "window.h"

int main (int argc, char **argv)
{
    window mainwindow;

    for (unsigned int i = 0; i < 5; i++)
    {
        mainwindow.update();
        SDL_Delay(200);
    }

    return 0;
}

Code: [Select]
#include <stdio.h>
#include "SDL2/SDL.h"


#ifndef WINDOW_H
#define WINDOW_H

class window
{
private:
    int screenw;
    int screenh;
    int screenbpp;
    bool quit;

    int FPS;
    int frame;
    int spriteframe;
    int gamestate;
    SDL_Window *Window;
    SDL_Renderer *renderer;
    bool windowOK;
    bool windowed;

protected:
public:
    window();
    ~window();
    void init();
    void update();

};

#endif // WINDOW_H
 

Code: [Select]

#include "window.h"
//#include "timer.h"
//#include "menu.h"
//#include "options.h"
//#include "game.h"
#include <stdio.h>

window::window()
{
        screenw = 1024; //32 wide
        screenh = 768;  //24 tall
        screenbpp = 32;
        //keydown = SDL_GetKeyboardState(NULL);
        quit = false;
        FPS = 30;
        frame = 0;
        spriteframe = 0;
        gamestate = 0;

    //loadicon();
    init();
    //screen = SDL_CreateRGBSurface(0, screenw, screenh, screenbpp,
    //                                    0x00FF0000,
    //                                    0x0000FF00,
    //                                    0x000000FF,
    //                                    0xFF000000);

    //if( screen == NULL )
//{
// printf( "Unable to init. screen" );
//}

    Window = SDL_CreateWindow("Running Man",
                          SDL_WINDOWPOS_UNDEFINED,
                          SDL_WINDOWPOS_UNDEFINED,
                          screenw, screenh,
                          SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL);

        if( Window == NULL )
{
printf( "Unable to init. Window" );
}


    renderer = SDL_CreateRenderer(Window, -1, 0);

    if( renderer == NULL )
{
printf( "Unable to init. renderer" );
}


    //ScreenTex = SDL_CreateTexture(renderer,
    //                           SDL_PIXELFORMAT_ARGB8888,
    //                           SDL_TEXTUREACCESS_STREAMING,
    //                           screenw, screenh);

     //   if( ScreenTex == NULL )
//{
printf( "Unable to init. screen texture" );
//}




SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);


    //if( screen == NULL )            //If there's an error
    //{
    //    windowOK = false;
    //    return;
    //}
    //else
    //{
    //    windowOK = true;
    //}


    windowed = true;         //Set window flag
}

//void window::loadicon()
  //  {
    //SDL_Surface* icon = Load_PNG("GUI/icon");
  //  SDL_WM_SetIcon(icon,NULL);
   // SDL_FreeSurface(icon);
  //  }

/*
void window::toggle_fullscreen()
{
    if( windowed == true )      //If the screen is windowed
    {
        SDL_SetWindowFullscreen( Window, SDL_FALSE );          //Set the screen to fullscreen

        if( screen == NULL )            //If there's an error
        {
            windowOK = false;
            return;
        }

        windowed = false;               //Set the window state flag
    }

    else if( windowed == false )        //If the screen is fullscreen
    {
        SDL_SetWindowFullscreen( Window, SDL_TRUE );             //Window the screen

        if( screen == NULL )             //If there's an error
        {
            windowOK = false;
            return;
        }

        windowed = true;                 //Set the window state flag
    }
}
*/
void window::update()
{
   // SDL_UpdateTexture(ScreenTex, NULL, screen->pixels, screen->pitch);


    SDL_RenderClear(renderer);
    //SDL_RenderCopy(renderer, ScreenTex, NULL, NULL);
    SDL_RenderPresent(renderer);

     //SDL_Flip( screen );
     //frame++;
     //if ((frame%2)==0)
    //    spriteframe++;
}

void window::init()
{
    SDL_Init ( SDL_INIT_EVERYTHING );
//    TTF_Init();
}

/*
void window::handle_events()
{
    if( windowOK == false )         //If there's something wrong with the window
    {
        return;
    }

    if( event.type == SDL_QUIT )     //If the user has Xed out the window
    {
        quit = true;            //Quit the program
    }

    if( event.type == SDL_WINDOWEVENT_SIZE_CHANGED )             //If the window resized
    {
        screenw = event.window.data1;
            screenh = event.window.data2;
            SDL_RenderPresent( renderer );


        if( screen == NULL )                    //If there's an error
        {
            windowOK = false;
            return;
        }
    }
        else if ((keydown[SDLK_LALT] || keydown[SDLK_RALT]) && keydown[SDLK_RETURN] )  //ALT+Enter goes to Fullscreen.
            {

                toggle_fullscreen();          //Turn fullscreen on/off
            }

        else if ((keydown[SDLK_LALT] || keydown[SDLK_RALT]) && keydown[SDLK_F4] )  //ALT+F4 quits.
            {

                quit = true;        //quits.
            }

                if( ( event.type == SDL_KEYDOWN ) && ( event.key.keysym.sym == SDLK_ESCAPE ) )
            {
                //Quit the program
                quit = true;
            }
        //If the window focus changed
        //Here is sthe stuff for if windows focus changed, window loses focus, etc.   Code changed for SDL2, haven't redone yet.
}

bool window::error()
{
    return !windowOK;
}

void window::gameloop()
{
        Timer fps;                      //start FPS timer, keeps it running at constant fps.
        menu mainMenu;
        options mainOptions;
        game mGame;

        while( quit == false )          //MAIN GAME LOOP
    {
        fps.start();

        //While there's events to handle
        while( SDL_PollEvent( &event ) )
        {
            handle_events();                 //Handle window events

            //GAME CONTROLS GO HERE
            if (gamestate == 0)     //before main menu.
                {

                }

            if (gamestate == 1)     //Main Menu
                {
                    mainMenu.handleEvents(event);
                    if (mainMenu.select() == 1)
                    {
                        gamestate = 2;
                        mainMenu.selected = 0;
                    }
                    if ((mainMenu.select() == 0) && gamestate == 1)
                    {
                        gamestate = 3;
                        mainMenu.selected = 0;
                    }
                }

            if (gamestate == 2)     //Main Menu
                {
                    mainOptions.handleEvents(event);
                    if (mainOptions.select() == 1)
                    {
                        gamestate = 1;
                        mainOptions.selected = 0;
                    }
                }

        }
        if (gamestate == 0)     //before main menu.
        {
            //show company logos

            gamestate++;
        }

        if (gamestate == 1)     //Main Menu
        {
            mainMenu.showmenu(screen);
        }

        if (gamestate == 2)     //Main Options
        {
            mainOptions.showmenu(screen);
        }
        if (gamestate == 3)     //Game Screen
        {
            mGame.playlevel(screen, spriteframe);
        }



        //Update the screen
        update();


        if ( fps.get_ticks() < 1000 / FPS)
        {
            SDL_Delay( ( 1000 / FPS ) - fps.get_ticks() );
        }

       //  1000/fps.get_ticks();    // gives the framerate of the last/current frame, should be checked ever x seconds, and stored in a variable to check framerate, if framerate checking should be desired.
    }
}


void window::quitall()
{
    SDL_Quit();
    TTF_Quit();
}
*/

window::~window()
{
    SDL_Quit();
}
 
Logged
Steam ID
Making things in Unity
Current Project: Demon Legend
Also working on THIS! Farworld Pioneers
Mastodon

Valid_Dark

  • Bay Watcher
  • If you wont let me Dream, I wont let you sleep.
    • View Profile
Re: Programming Help Thread (For Dummies)
« Reply #1282 on: July 03, 2014, 07:07:54 pm »

Valid_Dark: And... where exactly do you init SDL2?


Code: [Select]

#include <SDL.h>
#include <SDL_image.h>
#include <stdio.h>
#include <string>

#include "window.h"

window mainWindow;

int main( int argc, char* args[] )
{

    mainWindow.init();

    mainWindow.gameloop();

    mainWindow.close();


return 0;
}

and in init function in window

Code: [Select]
void window::init()
{
//Initialize SDL
if( SDL_Init( SDL_INIT_EVERYTHING ) < 0 )  //if init fails, print message
{
printf( "SDL could not initialize! SDL Error: %s\n", SDL_GetError() );
}
else  //if id doesn't fail.
{
//Set texture filtering to linear
if( !SDL_SetHint( SDL_HINT_RENDER_SCALE_QUALITY, "1" ) )
{
printf( "Warning: Linear texture filtering not enabled!" );
}

//Create window
gWindow = SDL_CreateWindow( "Running Racer", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL );
//Try SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL); as last argument instead of SDL_WINDOW_SHOWN
if( gWindow == NULL )
{
printf( "Window could not be created! SDL Error: %s\n", SDL_GetError() );
}
else
{
//Create vsynced renderer for window
Renderer = SDL_CreateRenderer( gWindow, -1, 0 );
if( Renderer == NULL )
{
printf( "Renderer could not be created! SDL Error: %s\n", SDL_GetError() );
}
else
{
//Initialize renderer color
SDL_SetRenderDrawColor( Renderer, 0xAA, 0x17, 0xAB, 0xFF );

//Initialize PNG loading
int imgFlags = IMG_INIT_PNG;
if( !( IMG_Init( imgFlags ) & imgFlags ) )
{
printf( "SDL_image could not initialize! SDL_image Error: %s\n", IMG_GetError() );
}
if(TTF_Init()==-1)
{
    printf( "SDL_TTF could not initialize! %s\n", TTF_GetError() );
}

SDL_RenderSetLogicalSize(Renderer, SCREEN_WIDTH, SCREEN_HEIGHT);

}
}
}

}


That is where and how I init SDL2

I haven't doen any programming in the last few days,
I started a new fortress in DorfFort, and just bought Zelda:A link between World
Logged
There are 10 types of people in this world. Those that understand binary and those that don't


Quote
My milkshake brings all the criminals to justice.

Moghjubar

  • Bay Watcher
  • Science gets you to space.
    • View Profile
    • Demon Legend
Re: Programming Help Thread (For Dummies)
« Reply #1283 on: July 03, 2014, 07:38:43 pm »

If you are trying to use any SDL stuff (as a general rule) before calling SDL_Init... which your constructor function seems to do... you may be in for some trouble.  Call init in your constructor asap and see if it works.
Logged
Steam ID
Making things in Unity
Current Project: Demon Legend
Also working on THIS! Farworld Pioneers
Mastodon

Valid_Dark

  • Bay Watcher
  • If you wont let me Dream, I wont let you sleep.
    • View Profile
Re: Programming Help Thread (For Dummies)
« Reply #1284 on: July 03, 2014, 09:53:45 pm »

What are you talking about,  I didn't show the constructor for window,
there is no SDL stuff in the constructor of the window class, and the first thing that happens after the constructor is calling SDL_Init

here's the constructor for the window class

Code: [Select]
window::window()
{
        //Screen dimension constants
        SCREEN_WIDTH = 640;
        SCREEN_HEIGHT = 480;

        quit = false;
        FPS = 30;
        frame = 0;
        spriteframe = 0;
        gamestate = 0;
        windowOK = true;

        gWindow = NULL;
        Renderer = NULL;

    windowed = true;         //Set window flag
}
Logged
There are 10 types of people in this world. Those that understand binary and those that don't


Quote
My milkshake brings all the criminals to justice.

Moghjubar

  • Bay Watcher
  • Science gets you to space.
    • View Profile
    • Demon Legend
Re: Programming Help Thread (For Dummies)
« Reply #1285 on: July 03, 2014, 10:29:12 pm »

Perhaps its not the same as what I saw here then (which is what I looked at first, then copied over and edited to get SDL2 working in my example)

Code: [Select]
#include "window.h"
#include "timer.h"
#include "menu.h"
#include "options.h"
#include "game.h"
#include <stdio.h>

window::window()
{
        screenw = 1024; //32 wide
        screenh = 768;  //24 tall
        screenbpp = 32;
        keydown = SDL_GetKeyboardState(NULL);
        quit = false;
        FPS = 30;
        frame = 0;
        spriteframe = 0;
        gamestate = 0;

    loadicon();
    screen = SDL_CreateRGBSurface(0, screenw, screenh, screenbpp,
                                        0x00FF0000,
                                        0x0000FF00,
                                        0x000000FF,
                                        0xFF000000);

    if( screen == NULL )
{
printf( "Unable to init. screen" );
}

    Window = SDL_CreateWindow("Running Man",
                          SDL_WINDOWPOS_UNDEFINED,
                          SDL_WINDOWPOS_UNDEFINED,
                          screenw, screenh,
                          SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL);

        if( Window == NULL )
{
printf( "Unable to init. Window" );
}


    renderer = SDL_CreateRenderer(Window, -1, 0);

    if( renderer == NULL )
{
printf( "Unable to init. renderer" );
}


    ScreenTex = SDL_CreateTexture(renderer,
                               SDL_PIXELFORMAT_ARGB8888,
                               SDL_TEXTUREACCESS_STREAMING,
                               screenw, screenh);

        if( ScreenTex == NULL )
{
printf( "Unable to init. screen texture" );
}




SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);


    if( screen == NULL )            //If there's an error
    {
        windowOK = false;
        return;
    }
    else
    {
        windowOK = true;
    }


    windowed = true;         //Set window flag
}

void window::loadicon()
    {
    //SDL_Surface* icon = Load_PNG("GUI/icon");
  //  SDL_WM_SetIcon(icon,NULL);
   // SDL_FreeSurface(icon);
    }

void window::toggle_fullscreen()
{
    if( windowed == true )      //If the screen is windowed
    {
        SDL_SetWindowFullscreen( Window, SDL_FALSE );          //Set the screen to fullscreen

        if( screen == NULL )            //If there's an error
        {
            windowOK = false;
            return;
        }

        windowed = false;               //Set the window state flag
    }

    else if( windowed == false )        //If the screen is fullscreen
    {
        SDL_SetWindowFullscreen( Window, SDL_TRUE );             //Window the screen

        if( screen == NULL )             //If there's an error
        {
            windowOK = false;
            return;
        }

        windowed = true;                 //Set the window state flag
    }
}

void window::update()
{
        SDL_UpdateTexture(ScreenTex, NULL, screen->pixels, screen->pitch);


        SDL_RenderClear(renderer);
        SDL_RenderCopy(renderer, ScreenTex, NULL, NULL);
        SDL_RenderPresent(renderer);

         //SDL_Flip( screen );
         frame++;
         if ((frame%2)==0)
            spriteframe++;
}

void window::init()
{
SDL_Init ( SDL_INIT_EVERYTHING );
TTF_Init();
}

void window::handle_events()
{
    if( windowOK == false )         //If there's something wrong with the window
    {
        return;
    }

    if( event.type == SDL_QUIT )     //If the user has Xed out the window
    {
        quit = true;            //Quit the program
    }

    if( event.type == SDL_WINDOWEVENT_SIZE_CHANGED )             //If the window resized
    {
        screenw = event.window.data1;
            screenh = event.window.data2;
            SDL_RenderPresent( renderer );


        if( screen == NULL )                    //If there's an error
        {
            windowOK = false;
            return;
        }
    }
        else if ((keydown[SDLK_LALT] || keydown[SDLK_RALT]) && keydown[SDLK_RETURN] )  //ALT+Enter goes to Fullscreen.
            {

                toggle_fullscreen();          //Turn fullscreen on/off
            }

        else if ((keydown[SDLK_LALT] || keydown[SDLK_RALT]) && keydown[SDLK_F4] )  //ALT+F4 quits.
            {

                quit = true;        //quits.
            }

                if( ( event.type == SDL_KEYDOWN ) && ( event.key.keysym.sym == SDLK_ESCAPE ) )
            {
                //Quit the program
                quit = true;
            }
        //If the window focus changed
        //Here is sthe stuff for if windows focus changed, window loses focus, etc.   Code changed for SDL2, haven't redone yet.
}

bool window::error()
{
    return !windowOK;
}

void window::gameloop()
{
        Timer fps;                      //start FPS timer, keeps it running at constant fps.
        menu mainMenu;
        options mainOptions;
        game mGame;

        while( quit == false )          //MAIN GAME LOOP
    {
        fps.start();

        //While there's events to handle
        while( SDL_PollEvent( &event ) )
        {
            handle_events();                 //Handle window events

            //GAME CONTROLS GO HERE
            if (gamestate == 0)     //before main menu.
                {

                }

            if (gamestate == 1)     //Main Menu
                {
                    mainMenu.handleEvents(event);
                    if (mainMenu.select() == 1)
                    {
                        gamestate = 2;
                        mainMenu.selected = 0;
                    }
                    if ((mainMenu.select() == 0) && gamestate == 1)
                    {
                        gamestate = 3;
                        mainMenu.selected = 0;
                    }
                }

            if (gamestate == 2)     //Main Menu
                {
                    mainOptions.handleEvents(event);
                    if (mainOptions.select() == 1)
                    {
                        gamestate = 1;
                        mainOptions.selected = 0;
                    }
                }

        }
        if (gamestate == 0)     //before main menu.
        {
            //show company logos

            gamestate++;
        }

        if (gamestate == 1)     //Main Menu
        {
            mainMenu.showmenu(screen);
        }

        if (gamestate == 2)     //Main Options
        {
            mainOptions.showmenu(screen);
        }
        if (gamestate == 3)     //Game Screen
        {
            mGame.playlevel(screen, spriteframe);
        }



        //Update the screen
        update();


        if ( fps.get_ticks() < 1000 / FPS)
        {
            SDL_Delay( ( 1000 / FPS ) - fps.get_ticks() );
        }

       //  1000/fps.get_ticks();    // gives the framerate of the last/current frame, should be checked ever x seconds, and stored in a variable to check framerate, if framerate checking should be desired.
    }
}


void window::quitall()
{
    SDL_Quit();
    TTF_Quit();
}

Edit: yea, I guess I grabbed your old stuff and you had fixed it by then. Whoops.
« Last Edit: July 04, 2014, 12:16:54 am by Moghjubar »
Logged
Steam ID
Making things in Unity
Current Project: Demon Legend
Also working on THIS! Farworld Pioneers
Mastodon

Valid_Dark

  • Bay Watcher
  • If you wont let me Dream, I wont let you sleep.
    • View Profile
Re: Programming Help Thread (For Dummies)
« Reply #1286 on: July 04, 2014, 12:31:23 am »

oh yeah, I guess.

Well that's good to know anyways, thanks, it wasn't something I was looking out for.
Logged
There are 10 types of people in this world. Those that understand binary and those that don't


Quote
My milkshake brings all the criminals to justice.

Sappho

  • Bay Watcher
  • AKA Aira; Legendary Female Gamer
    • View Profile
    • Aira Plays Games
Re: Programming Help Thread (For Dummies)
« Reply #1287 on: July 13, 2014, 04:47:07 am »

I've got a general question. I've been amazed how well Habit RPG has worked as a motivational tool for myself. I'm currently creating a game-based system of rewards and progression for my EFL program for the coming school year. So far it's all just been on paper, but it would be so excellent to have a system like that, that the kids could log into at home and see their progress. Something simple, but... something that would require a private login and password for each child, and that could track their progress and allow them to "buy" digital things with the points they've earned in class. It would also have to be something where I, the teacher, could go on and manually alter their accounts or view their characters.

For example, they earn 1000 points in class, and the teacher inputs them into the system at the end of the school day. After school, they can go home, log in, and see how many points they have. There are progress bars that fill up as the points increase, to show how close they are to leveling up (something that gets them a real-life reward). Then, they can spend the points to buy graphics to customize their avatar. Then there would have to be some kind of simple message board or something where the kids could talk to each other and show off their avatars.

I know this is probably too ambitious to create before school begins in September, but I have no idea what goes into making something like this. I've never created anything online that was multiplayer, other than StoryNexus games. I have no idea how things like usernames and passwords and such are stored and used. I don't even know what kind of coding it takes to display a progress bar based solely on the numbers I would input. So while I probably won't end up doing this for next year, it might make a good long-term project.

My question is, am I crazy? Is this feasible at all? Would it take a real expert coder to create this? Does an amateur who barely understands if...then statements have any hope of ever creating this? Or should I just stick with "offline" character sheets on paper and points written down on the class web site?

Thanks guys!

Mephisto

  • Bay Watcher
    • View Profile
Re: Programming Help Thread (For Dummies)
« Reply #1288 on: July 13, 2014, 11:56:16 am »

That is entirely feasible. I'm a horrible judge of how long it would take others to do this, but I could probably do something like that in the allotted time. Not sure about a complete beginner, unless you're really into it and don't have much else to do.

Make sure you aren't reinventing the wheel and it should be fairly easy. Common web frameworks either have account and authentication functionality either baked in or as an add on. Something like Bootstrap can do the progress bars.
Logged

Anvilfolk

  • Bay Watcher
  • Love! <3
    • View Profile
    • Portuguese blacksmithing forum!
Re: Programming Help Thread (For Dummies)
« Reply #1289 on: July 14, 2014, 02:08:19 pm »

I don't know of any platform that already provides you with those capabilities, so there's a chance you'd have to do it mostly from scratch. The good thing about web development is that it has very graphical output, so you get to see the results of what you are programming. That helps with motivation and debugging :)

There's LOTS of online resources on how to develop database+website applications. I personally learnt using PHP and mySQL, which I think are still pretty popular technologies. They're not as "dynamic" as other more modern alternatives (e.g. you have to open a new page or refresh the page to get more data), but it's probably a good starting spot :)
Pages: 1 ... 84 85 [86] 87 88 ... 91