Public Group

#### Archived

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

# Newbie needs help with tetris clone

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

## 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 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 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 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,_;HDCq;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(HINSTANCEh,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 on other sites
.. amazing.. but it didn''t work =P

##### 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 on other sites
Are you looking for reasons or just testing the newbies? :-D BTW, how on earth did you debug this? It is quite possibly the most cryptic code I have -ever- seen.

##### 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 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.//

[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 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

1. 1
2. 2
Rutin
24
3. 3
4. 4
JoeJ
18
5. 5

• 14
• 17
• 11
• 11
• 9
• ### Forum Statistics

• Total Topics
631758
• Total Posts
3002155
×