SCI Tetris SCI

* Source Code Included

September 21, 2020by Rainer De Temple

Total Downloads: 357

Game Description 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).