Jump to content
IGNORED

Thin Ice v1.0


InfernalKeith

Recommended Posts

THIN ICE - version 1.1

 

program and documentation by Keith Bergman for Orphantech.com

© 2010

 

 

1. OVERVIEW

 

Thin Ice is a game for the Texas Instruments 99/4A home computer. In it, you must help a penguin pick up treasure chests scattered across a frozen river, which is rapidly thawing, and get safely to the other side with as many chests as possible.

 

Thin Ice was conceived and written in March 2010 for the "30 Line Programming Contest" on the AtariAge.com TI 99/4A Programming forum.

 

Bugs, comments, suggestions, hate mail, love letters, and large cash PayPal transfers can be sent to exiletoledo@gmail.com.

 

 

 

1. SYSTEM REQUIREMENTS

 

On original hardware, Thin Ice requires the TI Extended BASIC cartridge. It has been tested and found to work on the Classic99 emulator on a Windows Vista PC. The program is written in 100% "stock" Extended BASIC, so it should have no issues in other emulators. If using Classic99, the "CPU Overdrive" mode may be more enjoyable, but is not required.

 

Thin Ice consists of one, self-contained program, which can be run from any disk. No file access is required during the game.

 

 

 

2. GAME PLAY AND SCORING

 

Your plucky penguin starts out on the grassy left shore of a frozen body of water. Scattered across the ice are twenty treasure chests. Even for penguins, who are notoriously bad at maintaining wealth, this is an unacceptable situation. Oh well, it's simple, though - just pick them up, cross the ice, and head for home on the right bank.

 

But what's this? Tiny blue cracks are beginning to appear in the ice. Our hero takes a step out onto the white expanse, and hears a series of bone-chilling crunching sounds as more cracks appear, and grow wider. Blue water is showing through holes in the ice. Every time the penguin takes a step, the ice gets weaker. One wrong move and it's into the drink, and the penguin loses all his money (and the game).

 

Players get 2000 points for each chest they pick up (4000 on difficulty level 2). In addition, a bonus counter goes up each time the penguin takes a step (100 on easy level, 200 on difficult). The longer you're on the ice, the more points you can earn -- however, if you fall through the ice, you end the game with a score of zero.

 

The player wins by reaching the right bank (the green strip on the right of your screen). You don't have to collect every chest, but you must collect at least one to win and end the game. The penguin can return to the left bank, or walk on the right back without having picked up a chest, but while he's goofing off in the grass, the ice is only getting worse!

 

Player can move N, S, E, W, or diagonally, with the letter keys corresponding to TI's arrows (holding down the FCTN key is not required, but CAPS LOCK is). Movement keys are:

 

W E R

S D

Z X C

 

In addition, Q can be pressed to quit the game.

 

After each step, a random number of additional cracks will appear in the ice (twice as many on difficulty level 2 as on easy level). If the ice under the penguin gives way, he goes into the water and the game ends. The penguin can walk onto any ice, no matter how fragile it looks, but the more blue you see on a space, the more likely it is to give way completely.

 

The cracking of the ice is accompanied by sound effects. When the cracking sounds have ended, the penguin can take another step.

 

Occasionally, the ice under a treasure chest will give way. While the chest will still be visible in the water, the penguin will fall in if he tries to get it. That chest is no longer obtainable.

 

In some instances, fewer than 20 chests will appear on the screen at the beginning. Treasure chests occasionally get hidden in a snowbank and are invisible to the penguin. If he stumbles across an invisible chest, he get the points for it. Invisible chests sometimes appear as the game progresses and the snow melts. It is also possible for two chests to be in the same area, one in front of the other -- the penguin gets both if he finds such a lucky setup.

 

In a few very unlikely cases, the penguin himself may disappear into the snow... so keep your eye on the guy! If he vanishes, you can still move him normally, and he should reappear, fit as a fiddle, once he steps out of the snow.

 

Obviously, it would be easy to zip across the ice, grab the nearest chest, and end the game. The challenge lies in trying to get all twenty chests, or to see how many you can get before the ice deteriorates too far to get home. What starts off as a serene patch of frozen water quickly turns into a slushy mess, and usually well before you've gathered all your treasure!

Edited by InfernalKeith
Link to comment
Share on other sites

Modified version 1.1 code and file added March 16, 2010.

 

 

80 INPUT "DIFFICULTY(1=EASY 2=HARD)?" :: IF D<1 OR D>2 THEN 80
90 CALL CLEAR :: CFL,SCORE,BONUS=0 :: FOR X=97 TO 109 STEP 2 :: READ X$ :: CALL CHAR(X,X$) :: NEXT X :: CALL COLOR(9,16,5,10,16,5,11,3,2)
95 RANDOMIZE :: CALL SCREEN(5) :: CALL CHAR(112,"FFFFFFFFFFFFFFFF") :: CALL COLOR(11,3,2) :: XP=89 :: YP=9
100 FOR X=1 TO 23 :: PRINT "aaaaaaaaaaaaaaaaaaaaaaaaaaaa" :: NEXT X :: CALL VCHAR(1,2,112,23) :: CALL VCHAR(1,31,112,23) :: PRINT "THIN ICE V1.1 (C) K. BERGMAN";
105 FOR Z=4 TO 11 :: CALL HCHAR(Z,1,ASC(SEG$("THIN ICE",Z-3,1))) :: CALL HCHAR(Z,32,ASC(SEG$("THIN ICE",Z-3,1))) :: NEXT Z
107 FOR Z=1 TO 20 :: X=INT(RND*23)+1 :: Y=INT(RND*28)+3 :: CALL SPRITE(#Z,107,11,((X-1)*+1,((Y-1)*+1) :: NEXT Z :: CALL SPRITE(#21,109,2,XP,YP)
109 DISPLAY AT(24,1):"1UP:";STR$(SCORE) :: DISPLAY AT(24,29-(LEN(STR$(BONUS))+6)):"BONUS:";STR$(BONUS)
110 W=(INT(RND*20)+1)*D :: FOR Z=1 TO 10+W :: X=INT(RND*23)+1 :: Y=INT(RND*28)+3 :: CALL GCHAR(X,Y,Q) :: Q=Q+2 :: IF Q>105 THEN Q=105
120 CALL HCHAR(X,Y,Q) :: CALL SOUND(10,-5,0) :: NEXT Z :: COUNT=COUNT+1 :: BONUS=BONUS+(100*D)
130 CALL GCHAR(((XP+7)/8),((YP+7)/8),W) :: IF W=105 THEN 1010
140 CALL KEY(0,K,S) :: IF S=0 THEN 140
150 X$="WERSDZXCQ" :: ON POS(X$,CHR$(K),1)+1 GOTO 140,190,200,210,220,230,240,250,260,160
160 DISPLAY AT(24,1):"QUIT? PRESS Y/N"
170 CALL KEY(0,K,S) :: IF S=0 THEN 170 ELSE IF K=78 THEN DISPLAY AT(24,1):"" :: GOTO 109 ELSE IF K=89 THEN CALL CLEAR :: STOP
180 GOTO 170
190 IF XP<2 OR YP<10 THEN 2000 ELSE XP=XP-8 :: YP=YP-8 :: GOTO 1000
200 IF XP<2 THEN 2000 ELSE XP=XP-8 :: GOTO 1000
210 IF XP<2 OR YP>240 THEN 2000 ELSE XP=XP-8 :: YP=YP+8 :: GOTO 1000
220 IF YP<10 THEN 2000 ELSE YP=YP-8 :: GOTO 1000
230 IF YP>240 THEN 2000 ELSE YP=YP+8 :: GOTO 1000
240 IF XP>176 OR YP<10 THEN 2000 ELSE XP=XP+8 :: YP=YP-8 :: GOTO 1000
250 IF XP>176 THEN 2000 ELSE XP=XP+8 :: GOTO 1000
260 IF XP>176 OR YP>240 THEN 2000 ELSE XP=XP+8 :: YP=YP+8 :: GOTO 1000
1000 CALL SOUND(200,880,0) :: CALL SPRITE(#21,109,2,XP,YP) :: CALL GCHAR(((XP+7)/8),((YP+7)/8),Z) :: IF Z<>105 THEN 1014
1010 FOR X=1010 TO 110 STEP-25 :: CALL SOUND(-30,X,0) :: NEXT X :: CALL CLEAR :: PRINT "YOU FELL THROUGH THE ICE ANDDROWNED -- NO SCORE!" :: STOP
1014 IF YP<>241 OR CFL<>1 THEN 1020
1015 CALL CLEAR :: CALL SOUND(400,880,0,1047,0) :: CALL SOUND(800,1175,0,1319,0) :: PRINT "YOU DID IT!":"FINAL SCORE:";SCORE+BONUS :: STOP
1020 FOR Z=1 TO 20 :: CALL POSITION(#Z,X,Y) :: IF X=XP AND Y=YP THEN SCORE=SCORE+(2000*D) :: CALL DELSPRITE(#Z) :: CALL SOUND(100,1568,0,1760,0) :: CFL=1
1030 NEXT Z :: GOTO 109
2000 CALL SOUND(200,110,0) :: GOTO 109
10000 DATA "FFFFFFFFFFFFFFFF","FFFFFDE7DFEFDFFF","DFBDDBE7DFEDDEFF","4E9DC96702E9CA17","0000000000000000","081020407C7C7C7C"
10010 DATA "60FC60705838F07C"

THINICE1-1.zip

Edited by InfernalKeith
  • Like 1
Link to comment
Share on other sites

A very nice idea and nice implementation. I had to turn on CPU Overdrive, and it got, shall we say, more playable. This would make a very nice effect game in assembler with smooth and continuous movement of the penguin and cracks dynamically evolving. Maybe with 16x16 graphic elements instead of 8x8. Final score: 20400. Nice one !

 

:)

Link to comment
Share on other sites

Fabulous game concept, though you're awfully hard on the animal kingdom in your games. ;) Another one I can't wait to load up tonight and give a solid playthrough. Well done!

 

The penguin will be fine if he falls in. He'll merely suffer financial ruin. Perhaps I should add a walrus in a top hat that comes in and takes all his 'doubloon-backed securities' if he falls in? :)

 

I like the idea of the game being continuous - as it is, it's more strategy than arcade, with the stopping for each move before the ice cracks. Just playing to the strengths of the language, and working around my own relatively crude abilities. I've always been more interested in strategic games, so even when I was younger and doing this more often, I didn't mess with sprite collisions and timing that much. If I ever actually finish all my strategy, board, and adventure game ideas, I'd like to tackle some more arcade-like stuff, but I'd probably just wait till I learn assembly first.

Link to comment
Share on other sites

It's actually not that clever. Had I not been constrained by 30 lines, I would have made the ice breaking patterns much more planned -- water follows water, so the weakest areas would be more likely to go than a relatively strong piece. I do love the effect as it is now, though. For what it is, this game turned out way better than I'd hoped. It's given me a lot of ideas for my adventure game, too, so it was a great exercise all around.

 

The level of quality entries in this contest is pretty staggering overall. I haven't seen one yet that wouldn't be as good as, or better than, the average third-party commercial software from 'back in the day.' This is the most community I've seen going on in the TI world in a long time, too - it's not two or three people carrying the ball, people are coming out of the woodwork with entries and apparently having a blast.

 

Awesome times.

Link to comment
Share on other sites

41,700! Woo hoo! :)

 

I actually think this game needs an adjustable difficulty level. I still have one open line, so maybe I'll add that. I think it's too easy to get all the chests and still have a viable way to the right side. There needs to be more of a chance that when you go for those last couple out-of-the-way chests, you'll get blocked off and not be able to make it to shore. Any thoughts?

Link to comment
Share on other sites

My top so far is 30700, and I had to be pretty ballsey about running around the cracking ice to get that high. But I expect as I continue playing I'll eventually need a higher difficulty level.

 

Something that might be interesting is inverting the bonus timer - you get more points the longer you stay out on the perilous ice. That would discourage dashing for safety and reward the player for taking dangerous risks.

Edited by The Codex
Link to comment
Share on other sites

My top so far is 30700, and I had to be pretty ballsey about running around the cracking ice to get that high. But I expect as I continue playing I'll eventually need a higher difficulty level.

 

Something that might be interesting is inverting the bonus timer - you get more points the longer you stay out on the perilous ice. That would discourage dashing for safety and reward the player for taking dangerous risks.

 

 

*smacking forehead* That makes about 9,000 times more sense than running it backward. I'm gonna give that, and the higher difficulty level (2x the number of new cracks per move, but 2x the score per chest and 2x bonus increments), a try later tonight. Shouldn't be hard to implement. (though adding 2x the cracks will pretty much make CPU Overdrive essential)

Edited by InfernalKeith
Link to comment
Share on other sites

thinice5.jpg

 

 

 

OK, difficulty level two. Higher scores, potentially bigger bonuses... but as we can see here, the poor little SOB has nowhere to go. Makes for a much more tense game, with ice cracking behind, in front of, and right underneath you, and whole sections of the screen that you have to just write off as too dangerous to mess with. I like it!

 

I'll zip and upload this modified version later.

Link to comment
Share on other sites

Woo, 40400 on hard mode! Man, that's sadistic. So tempting to go back for chests that are *that close*, but you know every step means a big shift in the playfield. Was literally standing on thin ice the last few steps of that board when I finally made it across.

 

Good job on this, sorry I didn't post sooner! And nice to see the tick-up bonus timer, it makes hanging around that bit longer so tempting (and suicidal).

Edited by The Codex
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...