Posts Tagged ‘game’

ADOM: Game review.

Friday, September 18th, 2009

I’m not a gamer. I don’t mind playing games, they’re fun. However I don’t see any sense in wasting a good majority of my day playing a game. Games attract me because of the intellect and flexibility within them, not so much the advance in graphics. Replay-value is probably what I weigh as most important for a game.

A good while back I was – I admit – searching for a game for my computer. As I was on Linux, the game had to be 1) Linux-compatible, 2) Free, and 3) Not lag. A quick public question in IRC came up with the answer: ADOM – Ancient Dungeons of Mystery.

It’s a command-line run game – a roguelike. For those unaffiliated with this genre a picture speaks a thousand words:

adom

Ok – it already looks ancient. As you might’ve guessed, it’s all text based, and you move about just like you would in any modern day RPG. The story revolves around you as a young explorer trying to discover the source of some evil thing called chaos that is destroying your world. You complete quests and learn through experimentation how to survive in this magical and mysterious world.

Being text-based, it allows me to play it when SSH’ed in remotely. This is a very ideal scenario for people who don’t do gaming seriously like me. It also helps that you can pretty much stop playing anytime and resume later exactly where you were without fear of the consequences.

What makes it fun is the flexibility and complexity of the game. There are a lot of things you can do – there are even several ways of winning. For example, I can attack a monster by throwing my hat at it – it probably won’t be very effective, but you get the idea. Or I could kill some rats and eat their corpses – or if there was a cat nearby I could feed it some rat corpses and it might become my pet. There are spells, races, classes, potions, herbs, weapons, shields, clothing, amulets, gods, quests, pets, shops, skills, talents, curses, special effects – you get the idea: it’s detailed. You can do a lot of stuff – and stuff you do affects stuff that happens to you. Heck, locations are randomly generated every single time you play the game. If that’s not awesome replayability, I don’t know what is. ADOM’s Wikipedia entry says a lot more about it than I can mention in this post.

Don’t be fooled by the hideous graphics – or lack of graphics. It’s a challenging and interesting gaming experience. I still haven’t won it – not even come close. True I’ve only played it 20 times or so (savefiles are limited to one per character, and once dead, that’s it. No saves), but yes, it’s challenging. You actually have to reason once in a while.

Just because it’s a console-based game doesn’t mean it doesn’t play nice with Windows or Macs. If you’re looking for an interesting gaming experience to try out next weekend I would recommend ADOM. Just a note: it takes time to learn, and it’s hard – don’t be discouraged if you keep on dying.

A Little 21 Fun with C++.

Saturday, January 17th, 2009

Given the recent love I’ve shown to a great deal of languages, including but not limited to making a text editor with Python (Ssss!), challenging your manliness with LaTeX (what real men use™), and most recently a tribute to a great deal of languages that all mesh together in the most wonderful way in “How to Make a Website part 1 – The Environment“, I’ve decided it’s time to give C++ a chance to show itself on this blog.

When I decided to learn application programming (from web programming), I chose the languages Python and C++. Python for the ultimate rapid application development it can be used for, as well as the ease of syntax that should introduce the application programming concepts a lot quicker to me, and C++ for, well, it’s pure power. C++ can be described as the swiss-army-knife of a programming language … a decently low level language, strictly typed, nicely object orientated, efficient, and it’s actually compiled, unlike what I’m used to (oh my, what a spoiled generation I live in). Another reason being that C++ is the main language used in KDE development, of which I would like to contribute to someday.

Today, being a Friday, was the be-all and end-all of the week, where I enter my weekend early, and take a break from the ongoings in my life. Therefore, I decided to poke again into C++. Armed with nothing but with whatever little I remembered from the first peek at the language more than 2-3 months ago, the man pages, and general knowledge of language syntax (well, the syntax highlighter gave some clues), I decided to make myself a BlackJack game. Suffice to say that the process was pain-free, and within 15 minutes I was playing BlackJack!

It is, of course, a CLI app, but I don’t see why it shouldn’t be cross platform. However, since I don’t have a Windows computer I can compile it on, you Windows folks will have to do it yourselves. For the technophobes, I give you a screenshot (hahaha):

2009-01-16-234418_1280x800_scrot

…and for the more logic inclined, well … a combination of basic common sense and mathematics should be enough for you to get the gist of what the code is doing. (It’s even commented for the hard of thinking) Take a look:

#include <iostream>

/*
 * Generate random number that represents a card (1-13)
 */

int generate_card()

{

    return rand() % 13 + 1;

}

/*
 * The AI will always have a card between 15-21. This will generate their card.
 */

int generate_ai_card()

{

    return rand() % 7 + 15;

}

/*
 * Let's play the game!
 */

int main()

{

    // This creates a random seed for rand() based on the time.

    srand(time(NULL));

    bool play;
    int ai_card, my_card;
    char x;

    std::cout << "Welcome to a very simple BlackJack game to kill time.\n";

    play = true;

    // Get the AI's card.

    ai_card = generate_ai_card();

    // Get your first card.

    my_card = generate_card();

    std::cout << "You have " << my_card << " - (h)it or (s)tay?: ";

    // Ask for a hit or stay.

    do

    {

        std::cin >> x;

        // If they have hit...

        if ( x == 'h' )

        {

            // Generate a card, and add it on.

            my_card = my_card + generate_card();

            // Have they bust?

            if ( my_card > 21 )

            {

                std::cout << "You got bust (" << my_card << ").\n";

                play = false;

            }

            else

            {

                std::cout << "You now have " << my_card << " - (h)it or (s)tay?: ";

            }

        }

        // If they stayed...

        else if ( x == 's' )

        {

            // ... See who is bigger.

            if ( my_card > ai_card )

            {

                // You WIN!

                std::cout << "You won! (" << my_card << " vs " << ai_card << ")\n";

                play = false;

            }

            else

            {

                // You have FAILED.

                std::cout << "You lost! (" << my_card << " vs " << ai_card << ")\n";

                play = false;

            }

        }

        else

        {

            std::cout << "Please either type \"h\" to hit or \"s\" to stay: ";

        }

    }

    while ( play == true );

    // Some credits and stuff.

    std::cout << "Thank you for playing Dion Moult's C++ BlackJack game.\n";

    return 0;

}

Again, it amazes me how I can turn a quick 15 minutes of nothing into an entire blog post. Perhaps I should finish off one of my drafts and give you something interesting for once.

Real Life: A Review by GameSpot

Sunday, September 14th, 2008

Useful information stuff:
Doing 640-816 and 70-647 prepares one for 70-271 as well as 70-293 and PMI-001, as well as saves time, by exempting one from 70-294.

I don’t usually condone game reviews but this one certainly caught my eye.

GameSpot Review: Real Life (9.6/10)

P.S. Sorry about the lack of updates – I’m working on something big which should be released very soon.