Sign in to follow this  
Pufixas

Oh my glorious code!

Recommended Posts

cr88192    1570

I don't have any code from when I was that age, as around the age of 14 or so, an HDD crash had wiped out everything I had before this point (this was in the days when CD-R burners for PCs didn't really exist yet, and computers typically only had a single HDD, *1).

 

*1: many case+MOBO designs in the 90s were a mess (only really space for a single HDD in the case, ISA cards and CPU/RAM on riser-cards, pushrod-operated PSUs, ...), though at least ATX mostly fixed this up, apart from the years of the evil heat-sink braces... (vs the plastic hook-based holders of older heatsinks, or the latter addition of levers).

 

however, code from back when I was between 15 and 17 was still pretty horrid...

it seems it wasn't until I was in my 20s that my coding skills actually started to get sort of worthwhile...

Edited by cr88192

Share this post


Link to post
Share on other sites
Nickie    322

The feeling of finding old code is awesome. Last week I found my old naruto(cuz there are sprites biggrin.png) arena game in Visual Basic. Hah I wrote it when I was 13 or 14. Srsly I had multiplayer and 2 characters biggrin.png, though I didn't know what function is and everything was in one large, really large function(automatically generated from a timer I think, I had found that if I double click it shows me editor and I can start typing smile.png )

 

PS. I used the deprecated direct draw for drawing... tongue.png. My greatest achievement was the moving camera that is following the character. Ohh also I found a vid of my game: http://youtu.be/gYePr5AMBJE hope you like it biggrin.png

Edited by Nickie

Share this post


Link to post
Share on other sites
Pufixas    1167

when i was 14, i only knew(and knew is a very long stretch) actionscript. so be proud of atleast knowing c at such a young age.

Actually this is C++. But at that time I didn't even know what a class or an object was. All I knew was basic functions, variables. So there's nothing really to be proud of. 

Share this post


Link to post
Share on other sites
Pufixas    1167

The feeling of finding old code is awesome. Last week I found my old naruto(cuz there are sprites biggrin.png) arena game in Visual Basic. Hah I wrote it when I was 13 or 14. Srsly I had multiplayer and 2 characters biggrin.png, though I didn't know what function is and everything was in one large, really large function(automatically generated from a timer I think, I had found that if I double click it shows me editor and I can start typing smile.png )

 

PS. I used the deprecated direct draw for drawing... tongue.png. My greatest achievement was the moving camera that is following the character. Ohh also I found a vid of my game: http://youtu.be/gYePr5AMBJE hope you like it biggrin.png

Haha, It's great! 

Share this post


Link to post
Share on other sites
LennyLen    5715

 

when i was 14, i only knew(and knew is a very long stretch) actionscript. so be proud of atleast knowing c at such a young age.

Actually this is C++. But at that time I didn't even know what a class or an object was. All I knew was basic functions, variables. So there's nothing really to be proud of. 

 

 AT least you knew how to use goto. ph34r.png 

Share this post


Link to post
Share on other sites
Pufixas    1167

 

 

when i was 14, i only knew(and knew is a very long stretch) actionscript. so be proud of atleast knowing c at such a young age.

Actually this is C++. But at that time I didn't even know what a class or an object was. All I knew was basic functions, variables. So there's nothing really to be proud of. 

 

 AT least you knew how to use goto. ph34r.png

 

Yeah biggrin.png

In the way I wrote that code, it looks more like BASIC, than C++

Edited by Edvinas Kilbauskas

Share this post


Link to post
Share on other sites
TheChubu    9446

When I was 12 I only knew how to put discs on my Playstation :D Later I learnt to put discs on my PC and the rest is history :P

 

Did you had automatic formatting or you wrote it just like that?

Share this post


Link to post
Share on other sites
Pufixas    1167

When I was 12 I only knew how to put discs on my Playstation biggrin.png Later I learnt to put discs on my PC and the rest is history tongue.png

 

Did you had automatic formatting or you wrote it just like that?

Yes, I had automatic formatting enabled.

Share this post


Link to post
Share on other sites
l0calh05t    1796

Ahhh, at 12 I was hacking the Half-Life SDK. Added ricochets (if the reflection angle was sufficiently shallow) and bullets that could go through walls. And made the UI green tongue.png

 

My first encounter with the horrors that are/were Visual C++ 6 and systems hungarian notation.

Edited by l0calh05t

Share this post


Link to post
Share on other sites
smr    2468


I don't have any code from when I was that age, as around the age of 14 or so, an HDD crash had wiped out everything I had before this point

 

Same, only my HDD was random girly-pop cassette tapes I "found" somewhere in the vicinity of my sister's tape player...

Share this post


Link to post
Share on other sites

If stdout supports ANSI escape codes (e.g. the terminals on *nix or DOS with ANSI.SYS) you could use the escape codes for even more interesting stuff without moving away from the standard library. Colors everywhere!

Share this post


Link to post
Share on other sites
Bacterius    13165

If stdout supports ANSI escape codes (e.g. the terminals on *nix or DOS with ANSI.SYS) you could use the escape codes for even more interesting stuff without moving away from the standard library. Colors everywhere!

 

I've been having so much fun with those lately, they are really easy to use as well. Shame they aren't 100% portable, though. I know there's ncurses (and its Windows counterpart PDCurses) but sometimes you just want colors here and there without engineering a complete user interface solution.

Share this post


Link to post
Share on other sites
Pufixas    1167

 

If stdout supports ANSI escape codes (e.g. the terminals on *nix or DOS with ANSI.SYS) you could use the escape codes for even more interesting stuff without moving away from the standard library. Colors everywhere!

 

I've been having so much fun with those lately, they are really easy to use as well. Shame they aren't 100% portable, though. I know there's ncurses (and its Windows counterpart PDCurses) but sometimes you just want colors here and there without engineering a complete user interface solution.

 

Dude, ncurses is as easy as or even easier than standart cout in C++. You don't need to engineer complete UI interface or nothing.

Some guy on youtube was interested in this game, and said I should rewrite it in ncurses, so I began working on it.

Look my simple graphics class, which works very well, you can use it too, if you want to.

// GraphicsSystem.h


#ifndef GRAPHICSSYSTEM_H
#define GRAPHICSSYSTEM_H


class GraphicsSystem
{
private:
    static const int SCREEN_WIDTH = 79;
    static const int SCREEN_HEIGHT = 24;
    char m_frameBuffer[SCREEN_WIDTH][SCREEN_HEIGHT];

    void renderBuffer();
public:
    GraphicsSystem();
    ~GraphicsSystem();

    void clearFramebuffer();
    void renderPixel(int x, int y, char ch);
    void render();
    int getScreenWidth();
    int getScreenHeight();
};

#endif // GRAPHICSSYSTEM_H


//--------------------------------------------------------------
//GraphicsSystem.cpp


#include <curses.h>
#include "GraphicsSystem.h"

GraphicsSystem::GraphicsSystem()
{
	clearFramebuffer();
	initscr();
	cbreak();
	timeout(50);
	keypad(stdscr, TRUE);
}

GraphicsSystem::~GraphicsSystem()
{
    endwin();
}

void GraphicsSystem::render()
{
    wclear(stdscr);
    renderBuffer();
    clearFramebuffer();
    wrefresh(stdscr);
}

int GraphicsSystem::getScreenWidth(){
    return SCREEN_WIDTH;
}

int GraphicsSystem::getScreenHeight(){
    return SCREEN_HEIGHT;
}

void GraphicsSystem::renderPixel(int x, int y, char ch)
{
    m_frameBuffer[x][y] = ch;
}

void GraphicsSystem::renderBuffer()
{
    for(int y = 0; y < SCREEN_HEIGHT; y++)
        for(int x = 0; x < SCREEN_WIDTH; x++)
        {
            mvwaddch(stdscr, y, x, m_frameBuffer[x][y]);
        }
}

void GraphicsSystem::clearFramebuffer()
{
    for(int y = 0; y < SCREEN_HEIGHT; y++)
        for(int x = 0; x < SCREEN_WIDTH; x++)
        {
            m_frameBuffer[x][y] = ' ';
        }
}



And you can draw stuff with ease just like this:

#include <curses.h>
#include <cstdlib>
#include <cmath>
#include "GraphicsSystem.h"

GraphicsSystem graphicsSystem;

int main()
{
    while(true){
        for(int x = 0; x < graphicsSystem.getScreenWidth(); x++)
        {
            for(int y = 0; y < graphicsSystem.getScreenHeight(); y++)
            {
                graphicsSystem.renderPixel(x,y,'x'); // render char 'x', or "pixel" on the screen
            }
        }
        graphicsSystem.render(); //clears screen, and displays all chars
    }
	return 0;
}

Edited by Edvinas Kilbauskas

Share this post


Link to post
Share on other sites

I think he meant he just wanted to add colors to the terminal as-is and nothing else. Honestly though, if one starts adding things like that one may as well end up just taking over the entire console, which is what ncurses does, pretty much.

Share this post


Link to post
Share on other sites
Bacterius    13165

I think he meant he just wanted to add colors to the terminal as-is and nothing else. Honestly though, if one starts adding things like that one may as well end up just taking over the entire console, which is what ncurses does, pretty much.

 

Not necessarily. What I meant was doing some minimal coloring of whatever you're outputting, without taking over the entire console, where simply wrapping up a string constant in an ANSI escape sequence is much easier than working with ncurses when the extra flexibility (menu helpers, borders, and so on) are not needed. Different solutions to different problems, really. ncurses is a nifty little library, and is great for making roguelikes and other games which lend themselves well to a 2D ASCII representation, as well as creating complete console interfaces, but that doesn't mean you need to use it every time you need to push a few colors to a terminal... sometimes a script is just a script wink.png

Share this post


Link to post
Share on other sites
cr88192    1570

If stdout supports ANSI escape codes (e.g. the terminals on *nix or DOS with ANSI.SYS) you could use the escape codes for even more interesting stuff without moving away from the standard library. Colors everywhere!

 

ANSI codes are nifty...

 

FWIW, the console in my engine also supports them to some extent, though not to the level that allows a full UI (this currently requires hooking console events and drawing directly into the console buffer), thus leading to the funkiness of doing a DOS-style UI inside of a 3D engine (I actually have an in-engine text editor with a vaguely similar color scheme and style to QBasic and MS Edit, though actually a little worse as it partly handles most non-trivial commands VI-style...).

 

as-is, it would require some tweaks to the console, and probably something analogous to stdout/stdin, such as to allow "programs" the ability to receive user-input (beyond generally being one-off console commands). at that rate, it would almost be worthwhile to throw together a little logic to allow console-commands to trigger loading/executing self-contained script files.

 

say something like:

function main(argv:string[]):void
{
    var s:string;
    var a:string[];
    stdout.printf("Greets!\n");
    while(!stdin.feof())
    {
        s=stdin.gets();
        a=s.split();
        if(a[0]=="north")
            { ... }
        ...
    }
}

I once considered possibly supporting render-to-texture with consoles, say to allow consoles to be textured onto in-game objects, but never did much with this.

Edited by cr88192

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this