## News:

*NEW* Current Version on STEAM16.793

Webchat:
Visit the chat

## Kaffepause

#### Kitty Hello

...braucht 3D addon und Update auf >= 2.40930.
Code (glbasic) Select
`// --------------------------------- //// Project:Cubies// Start: Thursday, September 30, 2004// IDE Version: 2.40930LIMITFPS 80MAXCUBIE=8DIM cubie_pos [MAXCUBIE+1][3]DIM cubie_mov [MAXCUBIE+1][3]DIM cubie_dirx[MAXCUBIE+1]DIM cubie_ani [MAXCUBIE+1]DIM cubie_life[MAXCUBIE+1]DIM cols[4] cols[0]=RGB(0x00, 0xff, 0x80) cols[1]=RGB(0xff, 0xff, 0x40) cols[2]=RGB(0xff, 0xff, 0xff) cols[3]=RGB(0x00, 0x00, 0x80) FOR all=0 TO MAXCUBIE CreateCube(all, 1, cols[MOD(all, 4)]) dx=RND(12); dy=RND(25)+10 x=dx+INTEGER(dy/2) y=dy z=dy-dx-INTEGER(dy/2) cubie_pos[all][0]=x cubie_pos[all][1]=y cubie_pos[all][2]=z cubie_dirx[all]  =0 cubie_ani[all]   =RND(100)/100 cubie_life[all]  =RND(200)-40 NEXT CreateStairs(MAXCUBIE+1, 1)  camx = 6; camy = 19; camz = 0WHILE TRUE dpos = GETTIMER()/1200 ani=ani+dpos camy=camy-dpos camx=camx-dpos/2 camz=camz-dpos/2 IF ani>2 ani=ani-2 FOR num=0 TO MAXCUBIE cubie_pos[num][0]=cubie_pos[num][0]+1 cubie_pos[num][1]=cubie_pos[num][1]+2 cubie_pos[num][2]=cubie_pos[num][2]+1 cubie_mov[num][0]=cubie_mov[num][0]+1 cubie_mov[num][1]=cubie_mov[num][1]+2 cubie_mov[num][2]=cubie_mov[num][2]+1 NEXT camx=camx+1 camy=camy+2 camz=camz+1 ENDIF FOR all=0 TO MAXCUBIE cubie_ani[all]=cubie_ani[all]+dpos cubie_life[all]=cubie_life[all]+dpos*10 IF cubie_ani[all]>1 AND cubie_life[all]>=0 cubie_ani[all]=cubie_ani[all]-1 cubie_pos[all][0]=cubie_pos[all][0]-1 cubie_pos[all][1]=cubie_pos[all][1]-1 cubie_pos[all][2]=cubie_pos[all][2]-1 IF cubie_dirx[all] cubie_pos[all][0]=cubie_pos[all][0]+1 ELSE cubie_pos[all][2]=cubie_pos[all][2]+1 ENDIF cubie_dirx[all] = 1 - cubie_dirx[all] ENDIF IF cubie_life[all]>400 THEN cubie_life[all]=-50 // Poof NEXT phi=phi + GETTIMER()/27/5 psi=psi + GETTIMER()/13/5 RenderScene(-ABS(30*SIN(phi)), 7+7*(SIN(phi)+COS(psi)), -ABS(30*COS(psi))) SHOWSCREENWENDFUNCTION RenderScene: x, y, z X_MAKE3D 1, 500, 35 X_CAMERA camx+x, camy+y, camz+z, camx, camy, camz X_SPOT_LT 0, RGB(255,255,255), camx,camy,camz-5, 1,-1, 1, 75 FOR num=0 TO MAXCUBIE DrawCubie(num, cubie_pos[num][0], cubie_pos[num][1], cubie_pos[num][2], cubie_ani[num], cubie_dirx[num]) NEXT X_SCALING 1,1,1 X_MOVEMENT 0,-1,0 X_DRAWOBJ MAXCUBIE+1, 0ENDFUNCTIONFUNCTION CreateStairs: num, szLOCAL x, y, z, dx, dy, col sz=sz/2 X_AUTONORMALS 1 X_OBJSTART num FOR dx=0 TO 12 FOR dy=4 TO 35 col=RGB(0, 0, 255) IF MOD(dx*dy, 2)=0 THEN col=RainbowColour(dx/12) // +->X // |\ // V Y // Z // //111111 //222222 //333333 //x = dx //y = dy //z = dy // //   12345 //  12345 // 12345 //12345 // x=dx // y=dy // z=dy-dx // //   1 //  123 // 12345 //123456 // 3456 //  56 -x+z // x=dx+INTEGER(dy/2) y=dy z=dy-dx-INTEGER(dy/2) x=x*sz*2 y=y*sz*2 z=z*sz*2 // Back Face X_OBJADDVERTEX -sz+x,  sz+y, -sz+z, 1, 1, col X_OBJADDVERTEX -sz+x, -sz+y, -sz+z, 1, 0, col X_OBJADDVERTEX  sz+x,  sz+y, -sz+z, 0, 1, col X_OBJADDVERTEX  sz+x, -sz+y, -sz+z, 0, 0, col X_OBJNEWGROUP // Top Face X_OBJADDVERTEX -sz+x,  sz+y,  sz+z, 0, 0, col X_OBJADDVERTEX -sz+x,  sz+y, -sz+z, 0, 1, col X_OBJADDVERTEX  sz+x,  sz+y,  sz+z, 1, 0, col X_OBJADDVERTEX  sz+x,  sz+y, -sz+z, 1, 1, col X_OBJNEWGROUP // Left Face X_OBJADDVERTEX -sz+x, -sz+y,  sz+z, 1, 0, col X_OBJADDVERTEX -sz+x, -sz+y, -sz+z, 0, 0, col X_OBJADDVERTEX -sz+x,  sz+y,  sz+z, 1, 1, col X_OBJADDVERTEX -sz+x,  sz+y, -sz+z, 0, 1, col X_OBJNEWGROUP NEXT NEXT X_OBJENDENDFUNCTION// ------------------------------------------------------------- //// -=#  CREATECUBE  #=-// ------------------------------------------------------------- //FUNCTION CreateCube: num, sz, col // Diese Variablen sind als LOCAL definiert: // num, sz, sz=sz/2 X_AUTONORMALS 1 X_OBJSTART num // Front Face X_OBJADDVERTEX  sz, -sz,  sz, 1, 0, col X_OBJADDVERTEX -sz, -sz,  sz, 0, 0, col X_OBJADDVERTEX  sz,  sz,  sz, 1, 1, col X_OBJADDVERTEX -sz,  sz,  sz, 0, 1, col X_OBJNEWGROUP // Back Face X_OBJADDVERTEX -sz,  sz, -sz, 1, 1, col X_OBJADDVERTEX -sz, -sz, -sz, 1, 0, col X_OBJADDVERTEX  sz,  sz, -sz, 0, 1, col X_OBJADDVERTEX  sz, -sz, -sz, 0, 0, col X_OBJNEWGROUP // Top Face X_OBJADDVERTEX -sz,  sz,  sz, 0, 0, col X_OBJADDVERTEX -sz,  sz, -sz, 0, 1, col X_OBJADDVERTEX  sz,  sz,  sz, 1, 0, col X_OBJADDVERTEX  sz,  sz, -sz, 1, 1, col X_OBJNEWGROUP // Bottom Face X_OBJADDVERTEX  sz, -sz, -sz, 0, 1, col X_OBJADDVERTEX -sz, -sz, -sz, 1, 1, col X_OBJADDVERTEX  sz, -sz,  sz, 0, 0, col X_OBJADDVERTEX -sz, -sz,  sz, 1, 0, col X_OBJNEWGROUP // Right face X_OBJADDVERTEX  sz,  sz, -sz, 1, 1, col X_OBJADDVERTEX  sz, -sz, -sz, 1, 0, col X_OBJADDVERTEX  sz,  sz,  sz, 0, 1, col X_OBJADDVERTEX  sz, -sz,  sz, 0, 0, col X_OBJNEWGROUP // Left Face X_OBJADDVERTEX -sz, -sz,  sz, 1, 0, col X_OBJADDVERTEX -sz, -sz, -sz, 0, 0, col X_OBJADDVERTEX -sz,  sz,  sz, 1, 1, col X_OBJADDVERTEX -sz,  sz, -sz, 0, 1, col X_OBJNEWGROUP X_OBJENDENDFUNCTION // sz// ------------------------------------------------------------- //// -=#  DRAWCUBIE  #=-// ------------------------------------------------------------- //FUNCTION DrawCubie: num, x, y, z, pos, dirx // Diese Variablen sind als LOCAL definiert: // num, x, y, z, dirx IF cubie_life[num]<0 cubie_ani[num]=.8 pos = 0.75 y = y-cubie_life[num]/3 ENDIF IF pos<0.5 X_SCALING 1,1,1 IF dirx cubie_mov[num][0] = x cubie_mov[num][1] = y cubie_mov[num][2] = z-2*pos X_MOVEMENT cubie_mov[num][0], cubie_mov[num][1], cubie_mov[num][2] X_ROTATION -90*pos*2, 1,0,0 ELSE cubie_mov[num][0] = x-2*pos cubie_mov[num][1] = y cubie_mov[num][2] = z X_MOVEMENT cubie_mov[num][0], cubie_mov[num][1], cubie_mov[num][2] X_ROTATION 90*pos*2, 0,0,1 ENDIF ELSE IF dirx cubie_mov[num][0] = x cubie_mov[num][1] = y+COS((pos-.5)*180)*1-1 cubie_mov[num][2] = z-1 ELSE cubie_mov[num][0] = x-1 cubie_mov[num][1] = y+COS((pos-.5)*180)*1-1 cubie_mov[num][2] = z ENDIF X_MOVEMENT cubie_mov[num][0], cubie_mov[num][1], cubie_mov[num][2] X_SCALING 1, 1+SIN((pos-.5)*360)*.3, 1 ENDIF X_DRAWOBJ num,0ENDFUNCTION // DRAWCUBIEFUNCTION RainbowColour: pos npos=pos WHILE npos>0.2 npos=npos-0.2 WEND npos=npos*5.0 SELECT pos CASE 0 TO 0.2 r=1; g=0; b=1-npos CASE 0.2 TO 0.4 r=1; g=npos; b=0 CASE 0.4 TO 0.6 r=1-npos; g=1; b=0 CASE 0.6 TO 0.8 r=0; g=1-npos; b=npos CASE 0.8 TO 1.0 r=npos; g=0; b=1 ENDSELECT RETURN RGB(147+108*r, 147+108*g, 147+108*b)ENDFUNCTION`