Newbie needs help with tetris clone

Started by
8 comments, last by Hicks28x 22 years ago
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
Advertisement
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.
Rhino2876
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".
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&&aa=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
.. amazing.. but it didn''t work =P
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?

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.
Now you see me...
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.
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]

[twitter]warrenm[/twitter]

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

This topic is closed to new replies.

Advertisement