вот программа
Исходный код
var
xt,yt,zt,xan,yan,zan,
cosxan, sinxan, cosyan, sinyan, coszan, sinzan :real;
sx,sy,sx1,sy1,p,zoom: integer;
cube: array[0..23] of real;
lindex: array[0..23] of integer ;
Procedure Draw3dobject(color:integer);
begin
for p:=0 to 11 do begin
sx:=trunc(zoom*cube[lindex[p*2]*3])+GetWidth div 2;
sy:=trunc(zoom*cube[lindex[p*2]*3+1])+GetHeight div 2;
sx1:=trunc(zoom*cube[lindex[p*2+1]*3])+GetWidth div 2;
sy1:=trunc(zoom*cube[lindex[p*2+1]*3+1])+GetHeight div 2;
setcolor(color,color,color);
drawline(SX,SY,sx1,sy1);
Repaint;
end;
end;
procedure calc;
begin
for p:=0 to 7 do begin
Yt := cube[p*3+1] * COSXan - cube[p*3+2] * SINXan;
Zt := cube[p*3+1] * SINXan + cube[p*3+2] * COSXan;
cube[p*3+1] := Yt;
cube[p*3+2] := Zt;
Xt := cube[p*3] * COSYan - cube[p*3+2] * SINYan;
Zt := cube[p*3] * SINYan + cube[p*3+2] * COSYan;
cube[p*3] := Xt;
cube[p*3+2] := Zt;
Xt := cube[p*3] * COSZan - cube[p*3+1] * SINZan;
Yt := cube[p*3] * SINZan + cube[p*3+1] * COSZan;
cube[p*3] := Xt;
cube[p*3+1] := Yt;
end;
end;
{ showWelcomeScreen - displays the game info screen }
procedure showWelcomeScreen;
var
textToDisplay : string;
textXPos : integer;
textYPos : integer;
begin
setColor(255, 255, 255);
fillRect(0, 0, getWidth, getHeight);
setColor(0, 0, 255);
setFont(FONT_FACE_PROPORTIONAL, FONT_STYLE_BOLD, FONT_SIZE_LARGE);
textToDisplay := 'INTRO 3dcube';
textXPos := (getWidth - getStringWidth(textToDisplay)) div 2;
textYPos := (getHeight - getStringHeight(textToDisplay)) / 2;
drawText(textToDisplay, textXPos, textYPos);
textYPos := textYPos + getStringHeight(textToDisplay);
setColor(0, 0, 0);
setFont(FONT_FACE_PROPORTIONAL, FONT_STYLE_PLAIN, FONT_SIZE_SMALL);
textToDisplay := 'pascalnet.ru mworld.ru';
textXPos := (getWidth - getStringWidth(textToDisplay)) div 2;
drawText(textToDisplay, textXPos, textYPos);
textYPos := textYPos + getStringHeight(textToDisplay);
end;
begin
if OpenPlayer('/Theme.mid', 'audio/midi') then begin end;
if SetPlayerCount(-1) then begin end;
if StartPlayer then begin end;
showWelcomeScreen;
repeat
until getKeyClicked <> KE_NONE;
cube[0]:=-1; cube[1]:=-1; cube[2]:=-1; cube[3]:=-1; cube[4]:=-1;
cube[5]:=1; cube[6]:=-1; cube[7]:=1; cube[8]:=-1; cube[9]:=-1;
cube[10]:=1; cube[11]:=1; cube[12]:=1; cube[13]:=-1; cube[14]:=-1;
cube[15]:=1; cube[16]:=-1; cube[17]:=1; cube[18]:=1; cube[19]:=1;
cube[20]:=-1; cube[21]:=1; cube[22]:=1; cube[23]:=1;
lindex[0]:=0; lindex[1]:=1; lindex[2]:=0; lindex[3]:=4;
lindex[4]:=0; lindex[5]:=2; lindex[6]:=1; lindex[7]:=3;
lindex[8]:=1; lindex[9]:=5; lindex[10]:=2; lindex[11]:=3;
lindex[12]:=2; lindex[13]:=6; lindex[14]:=3; lindex[15]:=7;
lindex[16]:=4; lindex[17]:=5; lindex[18]:=4; lindex[19]:=6;
lindex[20]:=5; lindex[21]:=7; lindex[22]:=6; lindex[23]:=7;
Zan := 0.1;
Yan := 0.02;
Xan := 0.02;
cosxan:=cos(xan); sinxan:=sin(xan);
cosyan:=cos(yan); sinyan:=sin(yan);
coszan:=cos(zan); sinzan:=sin(zan);
zoom:=30;
while GetKeyClicked = KE_NONE do begin
Draw3dobject(0);
repaint;
Draw3dobject(255);
repaint;
calc
end
end.
Это программа
отсюда только для MEDlet Pascal...
Компилирую, запускаю на своем NOKIA 6681, кубик все время растет в размерах
На Sony Erricsson t630 все нормально..
я в ауте... переменные сами изменяются