Tetris
Author |
Message |
rollerdude
|
Posted: Thu Oct 28, 2004 4:31 pm Post subject: Tetris |
|
|
Ok
so here's my tetris code, so far, it's very basic and the peices still squash each other
[code]
%TETRIS
setscreen ("nocursor,noecho,graphics:500;500")
proc block (x, y, clr100 : int) %build peices
Draw.FillBox (x, y, x + 10, y + 10, clr100)
end block
proc straight (a, b, clr, pos : int)
if pos = 1 or pos = 3 then
block (a, b, clr)
block (a + 10, b, clr)
block (a + 20, b, clr)
block (a + 30, b, clr)
elsif pos = 2 or pos = 4 then
block (a, b, clr)
block (a, b + 10, clr)
block (a, b + 20, clr)
block (a, b + 30, clr)
end if
end straight
proc t (e, f, clr3, pos : int)
if pos = 3 then
block (e, f, clr3)
block (e, f + 10, clr3)
block (e, f + 20, clr3)
block (e + 10, f + 10, clr3)
elsif pos = 1 then
block (e + 10, f, clr3)
block (e, f + 10, clr3)
block (e + 10, f + 10, clr3)
block (e + 10, f + 20, clr3)
elsif pos = 2 then
block (e, f + 10, clr3)
block (e + 10, f, clr3)
block (e + 10, f + 10, clr3)
block (e + 20, f + 10, clr3)
elsif pos = 4 then
block (e, f, clr3)
block (e + 10, f, clr3)
block (e + 20, f, clr3)
block (e + 10, f + 10, clr3)
end if
end t
proc bl (m, n, clr4, pos : int)
if pos = 1 then
block (m, n, clr4)
block (m, n + 10, clr4)
block (m, n + 20, clr4)
block (m + 10, n + 20, clr4)
elsif pos = 3 then
block (m, n, clr4)
block (m + 10, n, clr4)
block (m + 10, n + 10, clr4)
block (m + 10, n + 20, clr4)
elsif pos = 2 then
block (m, n + 10, clr4)
block (m + 10, n + 10, clr4)
block (m + 20, n + 10, clr4)
block (m + 20, n, clr4)
elsif pos = 4 then
block (m, n, clr4)
block (m + 10, n, clr4)
block (m + 20, n, clr4)
block (m, n + 10, clr4)
end if
end bl
proc fl (u, v, clr11, pos : int)
if pos = 1 then
block (u + 10, v, clr11)
block (u + 10, v + 10, clr11)
block (u + 10, v + 20, clr11)
block (u, v + 20, clr11)
elsif pos = 3 then
block (u + 10, v, clr11)
block (u, v + 10, clr11)
block (u, v + 0, clr11)
block (u, v + 20, clr11)
elsif pos = 2 then
block (u, v, clr11)
block (u + 10, v, clr11)
block (u + 20, v, clr11)
block (u + 20, v + 10, clr11)
elsif pos = 4 then
block (u, v + 10, clr11)
block (u + 10, v + 10, clr11)
block (u + 20, v + 10, clr11)
block (u, v, clr11)
end if
end fl
proc bloc (aa, bb, clr15 : int)
block (aa, bb, clr15)
block (aa, bb + 10, clr15)
block (aa + 10, bb, clr15)
block (aa + 10, bb + 10, clr15)
end bloc
proc fz (cc, dd, clr16,pos : int)
if pos = 1 or pos = 3 then
block (cc, dd, clr16)
block (cc + 10, dd, clr16)
block (cc + 10, dd + 10, clr16)
block (cc + 20, dd + 10, clr16)
elsif pos = 2 or pos = 4 then
block (cc, dd + 10,clr16)
block (cc, dd + 20,clr16)
block (cc + 10, dd,clr16)
block (cc + 10, dd + 10,clr16)
end if
end fz
var switch : int := 1
var ch : string (1) := " "
var oldch : string (1) := "a"
var row, col : int
row := 500 div 2 - 25
col := 500 - 50
loop
var NextPeice : int := Rand.Int (1, 6)
%var NextPeice : int := 2
loop
switch := 1
row := 500 div 2 - 25
for decreasing i : 500 .. 0 by 10
ch := oldch
if hasch then
getch (ch)
end if
if switch = 5 then
switch := 1
end if
if ord (ch) = 32 then
switch += 1
end if
if ord (ch) = 205 then
row := row + 10
elsif ord (ch) = 203 then
row := row - 10
else
end if
if NextPeice = 1 then
bl (row, i, 1, switch)
delay (100)
bl (row, i, white, switch)
elsif NextPeice = 2 then
t (row, i, 2, switch)
delay (100)
t (row, i, white, switch)
elsif NextPeice = 3 then
straight (row, i, 3, switch)
delay (100)
straight (row, i, white, switch)
elsif NextPeice = 4 then
fl (row, i, 4, switch)
delay (100)
fl (row, i, white, switch)
elsif NextPeice = 5 then
bloc (row, i, 5)
delay (100)
bloc (row, i, white)
elsif NextPeice = 6 then
fz (row, i, 6, switch)
delay (100)
fz (row, i, white, switch)
end if
end for
if NextPeice = 1 then
bl (row, 0, 1, switch)
elsif NextPeice = 2 then
t (row, 0, 2, switch)
elsif NextPeice = 3 then
straight (row, 0, 3, switch)
elsif NextPeice = 4 then
fl (row, 0, 4, switch)
elsif NextPeice = 5 then
bloc (row, 0, 5)
elsif NextPeice = 6 then
fz (row, 0, 6, switch)
end if
exit
end loop
end loop
[/code]
tell me what you think |
|
|
|
|
|
Sponsor Sponsor
|
|
|
rollerdude
|
Posted: Thu Oct 28, 2004 4:32 pm Post subject: tetris |
|
|
ok so, now that you tried, it, can you tell me how to make so the peices can't go off the screen
and how to make them not sqish each other? |
|
|
|
|
|
Andy
|
Posted: Thu Oct 28, 2004 5:42 pm Post subject: (No subject) |
|
|
make walls on all four sides... and set a statement where if u cant go past a wall...
here is one that i made a while back...
http://compsci.ca/v2/viewtopic.php?p=7751#7751
yea that wasnt too good... te best way to do it is treat it as a matrix and just keep on multiplying the matrix by some multiplier |
|
|
|
|
|
rollerdude
|
Posted: Thu Oct 28, 2004 5:48 pm Post subject: (No subject) |
|
|
thanx but, i'm using turing 3.1.1
so veiw.update and stuff like doesn't work
thanx anyway |
|
|
|
|
|
Andy
|
Posted: Thu Oct 28, 2004 7:32 pm Post subject: (No subject) |
|
|
haha, that wasnt an invitation to copy my code.. it was so u can see what i did and make your own |
|
|
|
|
|
gigaman
|
Posted: Thu Oct 28, 2004 9:24 pm Post subject: (No subject) |
|
|
I would reccomend that you use a random integer in an if statement so that each number calls a different piece. each piece a function |
|
|
|
|
|
rollerdude
|
Posted: Fri Oct 29, 2004 12:35 pm Post subject: tetris |
|
|
Quote:
haha, that wasnt an invitation to copy my code.. it was so u can see what i did and make your own
either way, can't use Veiw.Update so i don't no what it does(nor key up arrow,ect.) |
|
|
|
|
|
Tony
|
Posted: Fri Oct 29, 2004 4:42 pm Post subject: Re: tetris |
|
|
[quote="rollerdude"
either way, can't use Veiw.Update[/quote]
View.Update updates the view... you'd think the function name would imply its purpose But that's just graphics stuff, don't worry about it. |
Tony's programming blog. DWITE - a programming contest. |
|
|
|
|
Sponsor Sponsor
|
|
|
coolmanjess
|
Posted: Thu Jun 02, 2005 10:58 am Post subject: (No subject) |
|
|
hey rollerdude, what does the switch statement mean.....and im trying to figure out a way to stack them...i found out how to stop them at the wall n stuff...heres the code
if ord (ch) = 205 and row < wall (i used 300)
then
row := row + 10
elsif ord (ch) = 203 and row > 0 and row < 300
then
row := row - 10
there ya go |
|
|
|
|
|
wadeshaqdunk
|
Posted: Thu Jun 02, 2005 3:38 pm Post subject: C'Mon |
|
|
/*
How about some user input???
*/
if hasch then
getch (ch)
if ch = chr (203) then
Pic.Rotate (Pic.FileNew ("block.bmp), 1, 1, 90)
elsif ch = chr (205) then
%Just rotate the block the other way
%You actually have to have |
|
|
|
|
|
coolmanjess
|
Posted: Fri Jun 03, 2005 9:35 am Post subject: (No subject) |
|
|
ya thats a pretty good idea too....alot easier definetly, but how would u get them to stack....like if one block is full then dont drop to bottom...but what would be the code....and for getting rid of the lines after their filled up....i have a couple of classes left before my isu is done and thats all i need to finish up |
|
|
|
|
|
coolmanjess
|
Posted: Fri Jun 03, 2005 9:36 am Post subject: (No subject) |
|
|
ya thats a pretty good idea too....alot easier definetly, but how would u get them to stack....like if one block is full then dont drop to bottom...but what would be the code....and for getting rid of the lines after their filled up....i have a couple of classes left before my isu is done and thats all i need to finish up |
|
|
|
|
|
coolmanjess
|
Posted: Fri Jun 03, 2005 9:37 am Post subject: (No subject) |
|
|
ya thats a pretty good idea too....alot easier definetly, but how would u get them to stack....like if one block is full then dont drop to bottom...but what would be the code....and for getting rid of the lines after their filled up....i have a couple of classes left before my isu is done and thats all i need to finish up |
|
|
|
|
|
coolmanjess
|
Posted: Fri Jun 03, 2005 10:25 am Post subject: (No subject) |
|
|
sorry about that, spam = accident |
|
|
|
|
|
lzbravo
|
Posted: Fri Jun 10, 2005 7:02 pm Post subject: (No subject) |
|
|
the game isn't bad but you should put instructions and also slow the gmae down put more detail |
|
|
|
|
|
|
|