I've been slowly learning SCI programming, working on my game. As always my game is huge in scope and I needed a diversion.
I wanted to try to familiarise myself with a few lesser used functions of SCI and learn a bit more in the process, on a smaller game.
So today I present: SCI Tetris!
No don't check your calendar, this isn't an April Fools joke...
It's all coded in one room. I've included the source for anyone who wants to take a look (warning it's quite messy). Anyone new to SCI programming might learn a few things.
How it works and my methodology:- I keep an array of the board in a 20x10 array. SCI doesn't support 2d arrays, so it's basically a 200 element array.
The blocks are programatically generated from one View (with 6 loops) and move down the board. A popular implementation of a Tetris game.
When the blocks hit the bottom they become part of the board and I used the AddToPic function. One of the issues I had to overcome was the addToPic library function doesn't work the way I wanted it to so I used the Kernel function instead. - Once I had the main game working, I added boundary and lines cleared detection. I used the template gScore and gMaxScore for the scoring. I also used the death handler but modified it to display a random Russian "Superstition" just for fun (and to abuse the text resource feature). I copied all the quotes from Wikipedia into a text file, then using a hex editor I replaced all the CRLF's with 0's and imported the text patch into my game.
- The game gets progressively faster as you level up. Rosella is there to give you a sense of urgency.
- I had a bit of trouble with keys. I'm not sure if SCI0 allows a key-held event. So for that reason you can't hold a key down you have to "tap" the key controls. I didn't spend a lot of time on controls so it might be possible to improve.
- High scoring is saved to a local file in the game folder so that next time you play it's still there. The big font is just a "Russian" style Cyrillic-looking font that I found online.
- Save and restore sort of don't work, but it wouldn't take much to make it work. But why you'd want that is beyond me hahaha.
- There's also some midi music in there too.
- I should also add I used Kawa's version of SCI Companion, but I don't think it makes any difference.
- If anyone's wondering this is the result of about 12 hours coding/design/learning (about 2 days).
So anyway I've attached the game files to this post, take a look, let me know what you think, and any questions you might have!
Now back to my main game...