Short: Tetris clone called 'TINT' (NCurses) Author: Robert Lemmen, Marcello Mamino, AmigaOS 4.0 compile by Spot / PFP Uploader: "Varthall / Up Rough" Type: game/think Version: 0.3b Architecture: ppc-amigaos >= 4.0.5 O O O O o o o o o . . o . .____. _______ . ._______________________.___________ | |__ .____. ____.___________. | __ / ___ | __ /__|___ __/___|__ _ | | | __ | | |_/ / _| | |/ / ___/ | __// |___ | |_/ | | ______/|___________|____|_______|__________|_____| _____|_____ | |____| /_________| F O R .____. .________________________ _____________._____________| |__ | __ / __ /_ __ | ____/____) __/______ | |_/ / |/ / _| | __/ | | |_/ / . | ______/_____|___________________| | |____|___________/ . |____| |____| o . . o o o P R E S E N T S o o O O TINT / OS4 O O PORTED BY ............ SPOT SUPPLIED BY ... BILL MCEWEN TYPE ................. GAME --[ORIGINAL README]------------------------------------------------------------- Many thanks to the authors of the original tetris(tm) on which this game is based: Alexey Pajitnov Dmitry Pavlovsky Vadim Gerasimov Here are some links to pay tribute to their efforts: http://vadim.www.media.mit.edu/Tetris.htm http://www.geocities.com/Hollywood/2430/tetris.html http://atarihq.com/tsr/special/tetrishist.html As you'll see from those pages, there is a certain evil company prohibiting software such as this. This is unfortunate and is also the reason why you have to type tint each time you want to play the game instead you-know-what :P Here is a list of people who have written code for tint: Robert Lemmen Marcello Mamino Thanks for your contributions. ROTATION -------- STEP 1: Drop the rotate() functions and make a datastructure which holds all the shapes (and their rotated versions). typedef struct { int x,y; } block_t; typedef struct { int color; int next; block_t block[NUMSHAPES]; } shape_t; We then just hold the current blocknumber, when we rotate it, we replace it with it's the next field, and so on. STEP 2: Also, make the board a one-dimensional array and get rid of the block_t structure. The shape_t structure should look like this then: typedef struct { int next; int block[NUMSHAPES]; } shape_t; Just make a array with the initial 7 colors, and keep that color until the next piece is chosen. This should prove to be the optimal solution. SCORE ----- Ok, here's what I could figure out and what I think should be used. 1. We count the number of lines that a piece drops when the user press SPACE, 2. Add 1 to that when we figure out that the block has come to rest, 3. Multiply above by the current level, 4. If "Show Next" is enabled, divide by two, else take as is, and add the result to the score. Of course, we should add 2 instead of 1 to prevent loss of precision in step 4, and the displayed score is then the score / 2. TIMING ------ Here's what I'm going to use: 1. There is 9 levels, numbered from 1 to 9. We allow 1/level of a second to pass before we drop each block one line. 2. After each ten lines that is removed, we increase the level automatically, unless the player is already at the highest level (level 9). CAVEAT: If the user starts at a higher level than one, we pretend he didn't when we come to increasing levels, e.g. if he/she started at level 3, 30 lines must be dropped before we go to level 4. 3. I still have to decide whether to use the BSD type delaying (the type I'm currently using) or to do it the way I first did it (the signal handler method). The question remains which one is the most playable and which one is the most portable. --------------------------------------------------------------------------------