What game would you like to make according to my skill level

Discuss popular GCS tools like ZZT, Megazeux and Adventure Game Studio, as well as programming and other topics related to game design.
User avatar
tienkhoanguyen
PSEUDOCODER
Posts: 2664
Joined: Fri Sep 05, 2014 9:43 am
Location: Texas

"God, Jesus Christ, is number one!hehe" - my quote

Post by tienkhoanguyen »

"Jesus Christ!hehe" - my quote haha

Well, I figure the people on Windows might like to see a little something...
.........

So here are pre-packed Windows version using DOSBox 0.74:

http://www.mediafire.com/download/ac58a ... neDemo.exe

http://www.mediafire.com/download/7xcxo ... ideRPG.exe

Both game super little DEMO uses keyboard and SONY PSone controller.

Remember The SONY PSone controller has a USB adapter.

Thank you Jesus Christ.

For those who prefers DOSBox version, there is not much new here.
God, Jesus Christ, is number one!hehe
Jesus Christ!hehe
Bless Jesus Christ!
Then please bless my mom.
Honour to my mom Huong Thi Vu
Honour to my dad Thuy Binh Nguyen
Love to cousin Carl Anh Cuong Cao Vu
Thank you Jesus Christ.
pseudocoder
Experienced Member
Experienced Member
Posts: 76
Joined: Sun Nov 23, 2014 6:16 pm

Re: God, Jesus Christ, is number one!hehe

Post by pseudocoder »

tienkhoanguyen wrote:This is my remake to @pseudocoder.
That's pretty good - I like the cross hair and line plotting; the frogger demo was well done too. Keep up the good work. :)

I do have a question though; why so much inline assembler in C code? You might try writing a static lib for the common functions such as the game pad routines, maybe put, peek pixel, etc. That way, you wouldn't be redoing the same code with every new variation or demo.
User avatar
Quadko
Darklander
Darklander
Posts: 2092
Joined: Fri Jun 24, 2011 10:07 am

Post by Quadko »

Wow, I'm way behind. I'll try to catch up this week, looking forward to seeing the latest!
User avatar
Quadko
Darklander
Darklander
Posts: 2092
Joined: Fri Jun 24, 2011 10:07 am

Post by Quadko »

I stumbled across the C64 game Diagon featured on Moby, and the youtube gameplay video seemed both fun and completely something in your skillset, tien. Thought I'd mention it to see if it sparks any interest for you. Spaceships, blocking areas, shoot the moving aliens, polished in a little screen-clearing game. :thumbsup:
Image
User avatar
tienkhoanguyen
PSEUDOCODER
Posts: 2664
Joined: Fri Sep 05, 2014 9:43 am
Location: Texas

Jesus Christ! hehe

Post by tienkhoanguyen »

@pseudocoder:

I only problem is pointers so it is hard to explain but...
.....that is why too many inlines.

@Quadko:

Looks like fun to play but im still in moving
God, Jesus Christ, is number one!hehe
Jesus Christ!hehe
Bless Jesus Christ!
Then please bless my mom.
Honour to my mom Huong Thi Vu
Honour to my dad Thuy Binh Nguyen
Love to cousin Carl Anh Cuong Cao Vu
Thank you Jesus Christ.
pseudocoder
Experienced Member
Experienced Member
Posts: 76
Joined: Sun Nov 23, 2014 6:16 pm

Re: Jesus Christ! hehe

Post by pseudocoder »

tienkhoanguyen wrote:@pseudocoder:
I only problem is pointers so it is hard to explain but...
.....that is why too many inlines.
Yeah; games are a headache - I tip my hat to all those who develop the games. For grins, I took a partial stab at a text based pacman clone (no skill set at all in graphics or assembly).

Hopefully the code won't be cropped or maybe that would be for the best. :P Anyway - this junk needs worker threads, but TC wants no part of that.

Code: Select all

/*
    "pacman".c

    requires c style comments for TC 2.xx // is C++
    compiler: bcc 5.5 (free command tools version)

    text based pacman clone attempt; probable
    bugs, but it's a start.

    ghosts not yet implemented
*/

#include <stdio>
#include <string>
#include <stdlib>
#include <time>
#include <ctype>
#include <conio>

#define MAX_X 23
#define MAX_Y 21
#define OFF_X -1
#define OFF_Y -1

#define BLANK  0x20
#define POWER  0x02
#define SCORE  0xF9
#define PACM   0x02
#define GHST   0x01
#define DEAD   0xEC
#define WALL   0xDB
#define HOLE   0xCD

#ifdef BYTE
#undef BYTE
#define BYTE unsigned char
#else
#define BYTE unsigned char
#endif

enum pm_ghosts &#123; G_BLINKY = 0, G_PINKY, G_INKY, G_CLYDE &#125;;

#define PMAN_PLACE&#40;x, y, c&#41;\
&#123;\
    textcolor&#40;14&#41;;\
    textbackground&#40;0&#41;;\
    gotoxy&#40;&#40;x&#41;, &#40;y&#41;&#41;;\
    cprintf&#40;"%c", &#40;c&#41;&#41;;\
&#125;

#define PMAN_CLEAN&#40;x, y, c&#41;\
&#123;\
    textcolor&#40;7&#41;;\
    textbackground&#40;0&#41;;\
    gotoxy&#40;&#40;x&#41;, &#40;y&#41;&#41;;\
    cprintf&#40;"%c", &#40;c&#41;&#41;;\
&#125;

#define PMAN_SCORE&#40;s&#41;\
&#123;\
    textcolor&#40;7&#41;;\
    textbackground&#40;0&#41;;\
    gotoxy&#40;1, 24&#41;;\
    cprintf&#40;"%s", &#40;s&#41;&#41;;\
&#125;

#define GHOST_PLACE&#40;x, y, g&#41;\
&#123;\
    textcolor&#40;&#40;g&#41; == G_BLINKY ? RED &#58;\
              &#40;g&#41; == G_PINKY ? LIGHTRED &#58;\
              &#40;g&#41; == G_INKY ? LIGHTGREEN &#58; BROWN &#41;;\
    textbackground&#40;0&#41;;\
    gotoxy&#40;&#40;x&#41;, &#40;y&#41;&#41;;\
    cprintf&#40;"%c", GHST&#41;;\
&#125;

#define GHOST_FLASH&#40;x, y, g, p&#41;\
&#123;\
    if&#40;&#40;p&#41; < 40&#41;\
    &#123;\
        textcolor&#40;&#40;p&#41; % 2 == 0 ? 1 &#58; 7&#41;;\
        textbackground&#40;&#40;p&#41; % 2 == 0 ? 7 &#58; 1&#41;;\
        gotoxy&#40;&#40;x&#41;, &#40;y&#41;&#41;;\
        cprintf&#40;"%c", GHST&#41;;\
    &#125;\
    else\
    &#123;\
        textcolor&#40;&#40;p&#41; % 2 == 0 ? 4 &#58; 7&#41;;\
        textbackground&#40;&#40;p&#41; % 2 == 0 ? 7 &#58; 4&#41;;\
        gotoxy&#40;&#40;x&#41;, &#40;y&#41;&#41;;\
        cprintf&#40;"%c", GHST&#41;;\
    &#125;\
&#125;

/* vv broken ATM vv */
#define VPORT_FLASH&#40;&#41;\
&#123;\
    int i = 0;\
    while&#40;i < 40&#41;\
    &#123;\
        textcolor&#40;0&#41;;\
        textbackground&#40;7&#41;;\
        textcolor&#40;7&#41;;\
        textbackground&#40;0&#41;;\
        clrscr&#40;&#41;;\
        ++i;\
    &#125;\
&#125;

void vport_initView&#40;char vp&#91;&#93;&#91;MAX_X + 1&#93;&#41;;

int main&#40;&#41;
&#123;
    int i, j, init_game = 1,
        x = 12, y = 16,
        ox = x, oy = y,
        c = BLANK,
        i_score = 0,
        i_lives = 3,
        g_timer = 0,
        g_flash = 0;

    int g1_x = 12,
        g1_y =  9,
        g2_x = 10,
        g2_y = 10,
        g3_x = 12,
        g3_y = 10,
        g4_x = 14,
        g4_y = 10;

    int count_s = 0,
        count_p = 0;

    char s_score&#91;30&#93; = &#123; 0 &#125;;
    BYTE vport&#91;MAX_Y&#93;&#91;MAX_X + 1&#93;;

    #ifdef _NOCURSOR
        _setcursortype&#40;0&#41;; /* TC 201 doesn't seem to have this function */
    #endif

    textmode&#40;C40&#41;;
    clrscr&#40;&#41;;

    for&#40;;;&#41;
    &#123;
        if&#40;init_game == 1 || &#40;count_s == 150 && count_p == 4&#41;&#41;
        &#123;
            /* initialize entities */

            x  = 12; y = 16;
            ox = x; oy = y;
            c  = BLANK;

            g1_x = 12; g1_y =  9;
            g2_x = 10; g2_y = 10;
            g3_x = 12; g3_y = 10;
            g4_x = 14; g4_y = 10;

            textcolor&#40;7&#41;;
            textbackground&#40;0&#41;;
            clrscr&#40;&#41;;

            vport_initView&#40;vport&#41;;

            for&#40;i = 0; i < 21; ++i&#41;
            &#123;
                gotoxy&#40;1, i + 1&#41;;
                cprintf&#40;"%s", vport&#91;i&#93;&#41;;
            &#125;

            init_game = 0;
            count_s = 0;
            count_p = 0;
        &#125;

        sprintf&#40;s_score, " Score&#58; %6d     %c%c%c",
                i_score,
                i_lives == 3 ? PACM &#58; ' ',
                i_lives == 3 ? PACM &#58; ' ',
                i_lives == 3 ? PACM &#58; ' '&#41;;
        PMAN_SCORE&#40;s_score&#41;;

        PMAN_PLACE&#40;x, y, PACM&#41;;

        if&#40;g_flash == 0&#41;
        &#123;
            GHOST_PLACE&#40;g1_x, g1_y, G_BLINKY&#41;;
            GHOST_PLACE&#40;g2_x, g2_y, G_PINKY&#41;;
            GHOST_PLACE&#40;g3_x, g3_y, G_INKY&#41;;
            GHOST_PLACE&#40;g4_x, g4_y, G_CLYDE&#41;;
        &#125;
        else
        &#123;
            if&#40;g_timer < 50&#41;
            &#123;
                /* needs a worker thread; timers are blocking */
                clock_t tmr;

                GHOST_FLASH&#40;g1_x, g1_y, G_BLINKY, g_timer&#41;;
                GHOST_FLASH&#40;g2_x, g2_y, G_PINKY,  g_timer&#41;;
                GHOST_FLASH&#40;g3_x, g3_y, G_INKY,   g_timer&#41;;
                GHOST_FLASH&#40;g4_x, g4_y, G_CLYDE,  g_timer&#41;;

                tmr = clock&#40;&#41; + 0.25 * CLOCKS_PER_SEC;
                while&#40;clock&#40;&#41; < tmr&#41;&#123;&#125;

                ++g_timer;
            &#125;
            else
            &#123;
                g_timer = 0;
                g_flash = 0;
            &#125;
        &#125;

        if&#40;kbhit&#40;&#41;&#41; /* comment out line */
        &#123;  /* comment out line */

        i = getch&#40;&#41;;

        if&#40;tolower&#40;i&#41; == 'q'&#41; break;
        if&#40;i == 0&#41;
        &#123;
            j = getch&#40;&#41;;

            if&#40;j == 75 && &#40;vport&#91;y + OFF_Y&#93;&#91;x + OFF_X - 1&#93; == SCORE ||
                           vport&#91;y + OFF_Y&#93;&#91;x + OFF_X - 1&#93; == BLANK ||
                           vport&#91;y + OFF_Y&#93;&#91;x + OFF_X - 1&#93; == POWER&#41;&#41;
            &#123;
               if&#40;&#40;y + OFF_Y == 9&#41; && &#40;x + OFF_X - 1 <1>= 21&#41;&#41;
                    x = 3;
                else
                    ++x; /* right */
             &#125;
            if&#40;j == 72 && &#40;vport&#91;y + OFF_Y - 1&#93;&#91;x + OFF_X&#93; == SCORE ||
                           vport&#91;y + OFF_Y - 1&#93;&#91;x + OFF_X&#93; == BLANK ||
                           vport&#91;y + OFF_Y - 1&#93;&#91;x + OFF_X&#93; == POWER&#41;&#41;
            &#123;
                --y; /* up */
            &#125;
            if&#40;j == 80 && &#40;vport&#91;y + OFF_Y + 1&#93;&#91;x + OFF_X&#93; == SCORE ||
                           vport&#91;y + OFF_Y + 1&#93;&#91;x + OFF_X&#93; == BLANK ||
                           vport&#91;y + OFF_Y + 1&#93;&#91;x + OFF_X&#93; == POWER&#41;&#41;
            &#123;
                ++y; /* down */
            &#125;
        &#125;

        &#125;  /* comment out line */

        c = vport&#91;oy + OFF_Y&#93;&#91;ox + OFF_X&#93;;

        if&#40;c == SCORE&#41;
        &#123;
            i_score += 10;
            ++count_s;
            c = BLANK;

            vport&#91;oy + OFF_Y&#93;&#91;ox + OFF_X&#93; = c;
        &#125;
        else if&#40;c == POWER&#41;
        &#123;
            i_score += 50;
            ++count_p;
            c = BLANK;

            vport&#91;oy + OFF_Y&#93;&#91;ox + OFF_X&#93; = c;

            g_flash = 1;
        &#125;
        else if&#40;c == GHST&#41;
        &#123;
            i_lives -= 1;
        &#125;

        PMAN_CLEAN&#40;ox, oy, c&#41;;

        ox = x;
        oy = y;
    &#125;

    /* TC 201 doesn't seem to have _setcursortype;
       bcc 5.5 won't run in dosbox
       go figure
    */
    #ifdef _NOCURSOR
        _setcursortype&#40;2&#41;;
    #endif

    /*******************************************************************/

    textbackground&#40;0&#41;;
    textcolor&#40;7&#41;;
    textmode&#40;C80&#41;;

    clrscr&#40;&#41;;

    return 0;
&#125;

void vport_initView&#40;char vp&#91;&#93;&#91;MAX_X + 1&#93;&#41;
&#123;
    BYTE init_view&#91;&#93;&#91;MAX_X + 1&#93; =
    &#123;
        &#123; BLANK, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, WALL, WALL, WALL, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, POWER, WALL, WALL, SCORE, WALL, WALL, WALL, SCORE, WALL, WALL, WALL, SCORE, WALL, WALL, WALL, SCORE, WALL, WALL, POWER, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, SCORE, WALL, WALL, SCORE, WALL, SCORE, WALL, WALL, WALL, WALL, WALL, WALL, WALL, SCORE, WALL, SCORE, WALL, WALL, SCORE, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, SCORE, SCORE, SCORE, SCORE, WALL, SCORE, SCORE, SCORE, WALL, WALL, WALL, SCORE, SCORE, SCORE, WALL, SCORE, SCORE, SCORE, SCORE, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, WALL, WALL, WALL, SCORE, WALL, WALL, WALL, BLANK, WALL, WALL, WALL, BLANK, WALL, WALL, WALL, SCORE, WALL, WALL, WALL, WALL, BLANK, 0 &#125;,
        &#123; BLANK, BLANK, BLANK, BLANK, WALL, SCORE, WALL, BLANK, BLANK, BLANK, BLANK, BLANK, BLANK, BLANK, BLANK, BLANK, WALL, SCORE, WALL, BLANK, BLANK, BLANK, BLANK, 0 &#125;,
        &#123; WALL, WALL, WALL, WALL, WALL, SCORE, WALL, BLANK, WALL, WALL, WALL, HOLE, WALL, WALL, WALL, BLANK, WALL, SCORE, WALL, WALL, WALL, WALL, WALL, 0 &#125;,
        &#123; BLANK, BLANK, BLANK, BLANK, BLANK, SCORE, BLANK, BLANK, WALL, BLANK, BLANK, BLANK, BLANK, BLANK, WALL, BLANK, BLANK, SCORE, BLANK, BLANK, BLANK, BLANK, BLANK, 0 &#125;,
        &#123; WALL, WALL, WALL, WALL, WALL, SCORE, WALL, BLANK, WALL, WALL, WALL, WALL, WALL, WALL, WALL, BLANK, WALL, SCORE, WALL, WALL, WALL, WALL, WALL, 0 &#125;,
        &#123; BLANK, BLANK, BLANK, BLANK, WALL, SCORE, WALL, BLANK, BLANK, BLANK, BLANK, BLANK, BLANK, BLANK, BLANK, BLANK, WALL, SCORE, WALL, BLANK, BLANK, BLANK, BLANK, 0 &#125;,
        &#123; BLANK, WALL, WALL, WALL, WALL, SCORE, WALL, BLANK, WALL, WALL, WALL, WALL, WALL, WALL, WALL, BLANK, WALL, SCORE, WALL, WALL, WALL, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, WALL, WALL, WALL, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, SCORE, WALL, WALL, SCORE, WALL, WALL, WALL, SCORE, WALL, WALL, WALL, SCORE, WALL, WALL, WALL, SCORE, WALL, WALL, SCORE, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, POWER, SCORE, WALL, SCORE, SCORE, SCORE, SCORE, SCORE, BLANK, BLANK, BLANK, SCORE, SCORE, SCORE, SCORE, SCORE, WALL, SCORE, POWER, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, WALL, SCORE, WALL, SCORE, WALL, SCORE, WALL, WALL, WALL, WALL, WALL, WALL, WALL, SCORE, WALL, SCORE, WALL, SCORE, WALL, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, SCORE, SCORE, SCORE, SCORE, WALL, SCORE, SCORE, SCORE, WALL, WALL, WALL, SCORE, SCORE, SCORE, WALL, SCORE, SCORE, SCORE, SCORE, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, SCORE, WALL, WALL, WALL, WALL, WALL, WALL, SCORE, WALL, WALL, WALL, SCORE, WALL, WALL, WALL, WALL, WALL, WALL, SCORE, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, SCORE, WALL, BLANK, 0 &#125;,
        &#123; BLANK, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, WALL, BLANK, 0 &#125;
    &#125;;

    int i;

    for&#40;i=0; i < MAX_Y; ++i&#41;
        memcpy&#40;&vp&#91;i&#93;, init_view&#91;i&#93;, MAX_X + 1&#41;;
&#125;
User avatar
tienkhoanguyen
PSEUDOCODER
Posts: 2664
Joined: Fri Sep 05, 2014 9:43 am
Location: Texas

God, Jesus Christ, is number one!hehe

Post by tienkhoanguyen »

Jesus Christ!hehe

Okay, Heaven. Here I go, hehe. This is my remake of "Ball and Paddle" game. It is extremely slow for the little kids. You can use either the keyboards or the gamepads.

The keyboard controls are:

A-left
D-right

J-left (other player)
L-right

It is better to buy one of each of the following controllers:

Microsoft XBOX360 controller with USB connector
SONY PlayStation controller with USB connector adapter

Please talk with Quadko on this website if you need info on the controllers.

So this is my game for The New Year 2015

As the pirates say, "Enjoy!" hehe

http://www.mediafire.com/download/uqo4j ... LLPADL.EXE
God, Jesus Christ, is number one!hehe
Jesus Christ!hehe
Bless Jesus Christ!
Then please bless my mom.
Honour to my mom Huong Thi Vu
Honour to my dad Thuy Binh Nguyen
Love to cousin Carl Anh Cuong Cao Vu
Thank you Jesus Christ.
User avatar
tienkhoanguyen
PSEUDOCODER
Posts: 2664
Joined: Fri Sep 05, 2014 9:43 am
Location: Texas

God, Jesus Christ, is number one!hehe

Post by tienkhoanguyen »

Jesus Christ!hehe

Well, I'll be. Here is a Windows version of the same game hehe. For those of you who think the DOS version is just too slow...

http://www.mediafire.com/download/2nhwd ... llnpad.exe
God, Jesus Christ, is number one!hehe
Jesus Christ!hehe
Bless Jesus Christ!
Then please bless my mom.
Honour to my mom Huong Thi Vu
Honour to my dad Thuy Binh Nguyen
Love to cousin Carl Anh Cuong Cao Vu
Thank you Jesus Christ.
User avatar
tienkhoanguyen
PSEUDOCODER
Posts: 2664
Joined: Fri Sep 05, 2014 9:43 am
Location: Texas

God, Jesus Christ, is number one!hehe

Post by tienkhoanguyen »

Jesus Christ!hehe

I think this ball and paddle game is called pingpong? I am not too sure about the English language since I am Vietnamese. However, in this second edition of this remake, I made it so that you scored a point as a team every time the paddle reflects the ball. It just so happens that it is something young kids could play. I remember starting games at least around 9 years old.

http://www.mediafire.com/download/uqo4j ... LLPADL.EXE
God, Jesus Christ, is number one!hehe
Jesus Christ!hehe
Bless Jesus Christ!
Then please bless my mom.
Honour to my mom Huong Thi Vu
Honour to my dad Thuy Binh Nguyen
Love to cousin Carl Anh Cuong Cao Vu
Thank you Jesus Christ.
Post Reply