Voting

Category

real language

Bookmarking

Del.icio.us Digg Diigo DZone Earthlink Google Kick.ie
Windows Live LookLater Ma.gnolia Reddit Rojo StumbleUpon Technorati

Language Game Maker Language

(GMLv6, requires no extra coding to enabl)

Date:05/04/07
Author:Scoochi2
URL:http://scoochi2.freehostia.com
Comments:2
Info:http://www.yoyogames.com/gamemaker/
Score: (3.00 in 17 votes)
/*
99 beer bottles by Scoochi2
start a new game, add a room, and put this entire code in the room creation event
...or add it as a script/code in an existing game. Run the script to go to bottles.
*/

/* ~~~~~~~~~~~~~~~ object startup ~~~~~~~~~~~~~~~ */

global.playbottles=object_add();     // add an object
global.scroller=0;                   // we need to see all verses...
global.scrollchange=1;               // multiplier for 'rotation'
global.count=99;                     // how many bottles to start with?
global.text='';                      // our 'poem' holder :)


object_event_add (global.playbottles,ev_create,'','
    while global.count >= 1
        {
        global.text+=string(global.count)+" bottle";
        if global.count != 1
        then
            global.text+="s";
        global.text+=" of beer on the wall, "+string(global.count)+" bottle";
        if global.count != 1
        then
            global.text+="s";
        global.text+=" of beer.#Take one down and pass it around, ";
        global.count-=1;
        if global.count != 0
        then{
            global.text+=string(global.count)+" bottle";
            if global.count != 1
            then
                global.text+="s";
            global.text+=" of beer on the wall.";
            }
        else global.text+="no more bottles of beer on the wall.";
        global.text+="##";
        }
    global.text+="No more bottles of beer on the wall, no more bottles of beer.#Go to the store and
buy some more, 99 bottles of beer on the wall.";
    ');

object_event_add (global.playbottles,ev_keyboard,vk_add,"global.scrollchange+=1");
object_event_add (global.playbottles,ev_keyboard,vk_subtract,"global.scrollchange-=1");
object_event_add (global.playbottles,ev_keypress,vk_home,"global.scroller=0");
    
object_event_add (global.playbottles,ev_keypress,vk_escape,"game_end();");
object_event_add (global.playbottles,ev_draw,'','
draw_text(10,10-global.scroller,global.text);    
	');

object_event_add
(global.playbottles,ev_step,ev_step_normal,"global.scroller+=global.scrollchange");

/* ~~~~~~~~~~~~~~~ game settings ~~~~~~~~~~~~~~~ */

window_set_cursor(cr_none);
global.bottlesgo=room_add();
room_set_width(global.bottlesgo,700);
room_set_height(global.bottlesgo,480);
room_set_background_color(global.bottlesgo,c_white,1);
room_set_caption(global.bottlesgo,"Press Esc to quit, plus key to increase speed, subtract key to
decrease speed and the home key to restart");

/* ~~~~~~~~~~~~~~~ change room and create instance ~~~~~~~~~~~~~~~ */

room_set_code(global.bottlesgo,"instance_create(0,0,global.playbottles);");
room_goto(global.bottlesgo);

Download Source | Write Comment

Alternative Versions

VersionAuthorDateCommentsRate
1Jake Gilbert05/25/058
1 var, no loops/recursion, EOB adaptablebrac3710/24/090

Comments

>>  Insane said on 09/24/07 03:37:50

Insane Isn't all that extra junk a bit unnecessary?
The code could be stripped down to:

<code>
for (i=99; i>0; i-=1) {
show_message(string_replace(string(i),"0","no";)+" bottle"+string_repeat("s",i == 0)+" of beer on the wall, "+string_replace(string(i-1),"0","no";)+" bottles of beer.#
Take one down and pass it around, "+string(i-1)+" bottle"+string_repeat("s",i == 0)+" of beer on the wall.";);
}
show_message("No more bottles of beer on the wall, no more bottles of beer.
Go to the store and buy some more, 99 bottles of beer on the wall.";);
</code>

The show_message could be arbitrarily replaced with a string too.

>>  Nick said on 04/09/09 16:16:24

Nick

Download Source | Write Comment

Add Comment

Please provide a value for the fields Name, Comment and Security Code.
This is a gravatar-friendly website.
E-mail addresses will never be shown.
Enter your e-mail address to use your gravatar.

Please don't post large portions of code here! Use the form to submit new examples or updates instead!

Name:

eMail:

URL:

Security Code:
  
Comment: