Archived

This topic is now archived and is closed to further replies.

Newbie needs help with tetris clone

This topic is 5750 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi As a newbie to game programming i thought it would be a good start to make a tetris clone, but alas i am running into all sorts of problems Would there be any programmers out there that would be able to give me a hand ? if so please send a mail to lindsayf@gofree.indigo.ie thanks in advance

Share this post


Link to post
Share on other sites
How about this idea: Think up your own logic and ideas for creating a tetris game. That way you will actually LEARN something rather than just regurgitating others work.

Share this post


Link to post
Share on other sites
Please don''t flame people for asking for help; that''s why this forum''s here.
Hicks: I''d suggest you get a good grasp on the language you''re going to be using before you start. If you''re ready to get started, though, there are quite a few articles on development in the gamedev archives. Try the "articles and resources" link under "resources".

Share this post


Link to post
Share on other sites
Hmm, time to post my tetris code for you

This really works. Link ddraw.lib and winmm.lib to it and compile in msvc:

  
/* Super-compressed Tetris. Copyright 2001 Pouya Larjani. Please don''t remove.*/
#include <ddraw.h>

#define B(x,y,r,p) (p&1<<(((x^(r+1&2?3:0))<<(r*2&2))+((y^(r&2?3:0))*(r&1?1:4))))

#define F(x,y,w,h,c) {RECT R={x,y,x+w,y+h};b.dwFillColor=c;_->Blt(&R,0,0,k,&b);}

char *m="Tetris\0By Pouya Larjani\0Score:\0Next:\0GAME OVER",z[9]; unsigned L=16
,k=16778240,Q=9,I,x=9,n,y,r,p,i,a,t,u,v,e,s[30][20],P[]={1632,75328,83488,74274,
222272,221728,206368};DDBLTFX b={100};LPDIRECTDRAW d;LPDIRECTDRAWSURFACE V,_;HDC
q;HWND W;LOGFONT l={96,48};MSG g;DDSURFACEDESC S={108,33,0,0,0,1,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,{536}};HFONT f=CreateFontIndirect(&l);DDSCAPS c={4};X()
{for(i=1;i<30;i++){a=1;for(I=0;I<20&&a;a=s[i][I++]);if(a){for(I=i*20+19;I>=20;s[
I/20
][I%20]=s[I/20-1][I--%20]);e++;return 1;}}return 0;}M(int p){return(++p<<21&
1<<23|p<<14&1<<15|p<<7&1<<7)+8355711;}K(int v){return GetAsyncKeyState(v)&32768;
}O(int x,int y,int r,int p){for(I=0;I<L;I++)if(B(I%4,I/4,r,P[p])&&(x+I%4<0||x+I%
4>19||y+I/4<0||y+I/4>29||s[y+I/4][x+I%4]))return 0;return 1;}void G(){v=r;t=x;u=
y;TranslateMessage(&g);DispatchMessage(&g);(g.message==275&&Q)?SetTimer(W,1,1050
-50*((e<100)?e/5:20),0),u++:K(38)?v=r?v-1:P[p]>>16&3:K(37)?t--:K(39)?t++:K(40)?u
++:K(27)?PostQuitMessage(0):0;if(O(t,u,v,p))x=t,y=u,r=v;else if(u-y){for(I=0;I<L
;I++)if(B(I%4,I/4,r,P[p]))s[y+I/4][x+I%4]=1<<23;y?p=n,y=0,n=rand()%7,x=9,r=0:Q=0
;while(X());}}void R(){F(0,0,640,480,1<<15);for(I=0;I<600;I++)F(I%20*L,I/20*L,L,
L,s[I/20][I%20]);for(I=0;I<L;I++){if(B(I%4,I/4,r,P[p]))F((x+I%4)*L,(y+I/4)*L,L,L
,M(p));F(336+I%4*L,400+I/4*L,L,L,B(I%4,I/4,0,P[n])?M(n):0);}_->GetDC(&q);itoa(e,
z,10);SelectObject(q,GetStockObject(13));SetTextColor(q,M(6));SetBkMode(q,0);V->
Restore();TextOut(q,336,120,m+7,L);TextOut(q,336,340,m+24,6);TextOut(q,408,340,z
,strlen(z));TextOut(q,336,380,m+31,5);TextOut(q,444,300,m+37,9-Q);SelectObject(q
,f);TextOut(q,336,20,m,6);_->ReleaseDC(q);V->Flip(0,1);}WINAPI WinMain(HINSTANCE
h,HINSTANCE,char*,int){srand(timeGetTime());WNDCLASS w={0,DefWindowProc,0,0,h,0,
0,0,0,m};RegisterClass(&w);W=CreateWindow(m,m,2432696320,0,0,640,480,0,0,h,0);p=
rand()%7;ShowCursor(0);DirectDrawCreate(0,&d,0);d->SetCooperativeLevel(W,83);d->
SetDisplayMode(640,480,32);d->CreateSurface(&S,&V,0);V->GetAttachedSurface(&c,&_
);n=rand()%7;SetTimer(W,1,0,0);while(g.message!=18)PeekMessage(&g,0,0,0,1)?G():R
();int U=0;V->Release();d->Release();DestroyWindow(W);DeleteObject(f);return U;}


Sorry, just gotta show that off

Share this post


Link to post
Share on other sites
quote:
Original post by Chordz
.. amazing.. but it didn''t work =P


I''m pretty sure you did something wrong
I have the compiled exe here

Now why did it not work?

Share this post


Link to post
Share on other sites
lol, nice code pouya ;p


Hicks, what kind of problems are you running into...at the very least it shouldn''t be too hard to create a 2-dimensional array and do some crude collision detecting through that.

Give us some idea of what you''ve come up with.

Share this post


Link to post
Share on other sites
quote:
Original post by CyberWraith
BTW, how on earth did you debug this? It is quite possibly the most cryptic code I have -ever- seen.


Try it some time. If you write it in expanded format first, it's quite easy.

<the remainder of this post has been removed due to irreconcilable formatting issues. >
<if you are interested, go here for more information about programming games in this manner: http://www.gamedev.net/community/forums/topic.asp?topic_id=51440 >

Later,
ZE.


//email me.//zealouselixir software.//msdn.//n00biez.//
miscellaneous links

[if you have a link proposal, email me.]

EDITED by me for several reasons.

[edited by - zealouselixir on March 20, 2002 2:44:48 PM]

Share this post


Link to post
Share on other sites
quote:
Original post by ZealousElixir
Try it some time. If you write it in expanded format first, it''s quite easy.


It''s way more than that actually. I''m storing all the pieces and board in an encrypted binary format and those two macros on the top are for decoding them. Not an easy thing to do

But yeah, if you don''t try to encrypt the code, it''s easy, just rename all your variables into one letter things CAREFULLY and then erase all the extra newlines and wrap around the 80 char and you have a cryptic piece of code.

Not suggesting the tetris newbies to try it out by the way

Share this post


Link to post
Share on other sites