高手帮帮忙  有这种软件吗 或者是怎么写程序

解决方案 »

  1.   

    Delphi做界面比VC较容易,做算法较麻烦。但VC做算法和图形程序都会更好一些。
      

  2.   

    3D 贪食蛇游戏 (OpenGL)
    http://www.2ccc.com/article.asp?articleid=3573
      

  3.   

    直接使用OpenGL读入,代码如下:unit untMainForm;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, GLInit, RapidUI, untObjModel, ExtCtrls, OpenGL;type
      TfrmMain = class(TForm)
        tmrRender: TTimer;
        tmrKey: TTimer;
        opDlg: TOpenDialog;
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure tmrRenderTimer(Sender: TObject);
        procedure tmrKeyTimer(Sender: TObject);
        procedure FormResize(Sender: TObject);
        procedure FormClick(Sender: TObject);
      private
        procedure SetView;
        procedure SetLights;
        procedure RenderScene;
        { Private declarations }
      public
        { Public declarations }
      end;var
      frmMain: TfrmMain;
      glInitor : TOpenGLInit;
      objMdl:TObjModel;
      yDeg,xDeg:Single;
    implementation{$R *.dfm}procedure TfrmMain.FormCreate(Sender: TObject);
    begin
      objMdl := TObjModel.Create;
      GLinitor := TOpenGLInit.Create(Handle,24,stdDoubleBuffer);
      SetView;
      if opdlg.Execute then
         objMdl.LoadFromFile(opdlg.FileName); 
      SetLights;
    end;procedure TfrmMain.SetLights;
    var AmbientLight,DiffuseLight,SpecularLight:array[1..4] of Single;
        LightPos:array[1..4] of Single;
        SpotDir:array[1..3] of Single;
    begin
      AmbientLight[1]:=0.3;AmbientLight[2]:=0.3;
      AmbientLight[3]:=0.3;AmbientLight[4]:=1;
      DiffuseLight[1]:=1;DiffuseLight[2]:=1;
      DiffuseLight[3]:=1;DiffuseLight[4]:=1;
      SpecularLight[1]:=0.4;SpecularLight[2]:=0.4;
      SpecularLight[3]:=0.4;SpecularLight[4]:=1;
      LightPos[1]:= 100000; LightPos[2]:=100000; LightPos[3]:=400; LightPos[4]:=1;
      glEnable(GL_LIGHTING); //¿ªÆô¹âÕÕϵͳ
      //ÉèÖÃ0ºÅ¹âÔ´
      glLightfv(GL_LIGHT0,GL_AMBIENT,@AmbientLight);
      glLightfv(GL_LIGHT0,GL_DIFFUSE,@DiffuseLight);
      glLightfv(GL_LIGHT0,GL_SPECULAR,@SpecularLight);
      glLightfv(GL_LIGHT0,GL_POSITION,@LightPos);  glEnable(GL_LIGHT0);  //ÆôÓÃ0ºÅ¹âÔ´end;procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      objMdl.Free;
      glInitor.Free;
    end;procedure TfrmMain.SetView;
    begin
      glClearColor(0,0,0,0);//ÉèÖñ³¾°ÑÕɫΪºÚÉ«
      glViewPort(0,0,ClientWidth,ClientHeight);//Ö¸¶¨OpenGLÔÚ´ËÇøÓòÄÚ»æͼ¡£
      glMatrixMode(GL_PROJECTION);//ÉèÖÃÊÓͼͶӰ±ä»»¾ØÕó
        glLoadIdentity;//¼ÓÔص¥Î»¾ØÕó¡£
        gluPerspective(60,ClientWidth/ClientHeight,1,2200);//´´½¨Í¸ÊÓͶӰ
      glMatrixMode(GL_MODELVIEW);//½«¾ØÕó±ä»»¶ÔÏóÇл»ÎªÄ£ÐÍÊÓͼ±ä»»¡£
    end;procedure TfrmMain.RenderScene;
    begin
      glLoadIdentity;
      
      glShadeModel(GL_SMOOTH);
      glEnable(GL_DEPTH_TEST);
      glCullFace(gl_front);
      glFrontFace(GL_CW);//˳ʱÕë²øÈÆΪÕýÃæ
      glEnable(GL_CULL_FACE);
      glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);//Çå¿Õ»º³åÇø
        glTranslate(0,0,-200);    glRotate(yDeg,0,1,0);
      glRotate(xDeg,1,0,0);
      SetLights; //ÉèÖùâÔ´  glEnable(GL_TEXTURE_2D);
      
      objMdl.Render;
      swapbuffers(wglGetCurrentDC);
    end;procedure TfrmMain.tmrRenderTimer(Sender: TObject);
    begin
      RenderScene;
    end;procedure TfrmMain.tmrKeyTimer(Sender: TObject);
    begin
      if GetAsyncKeyState(VK_LEFT)<>0 then
      begin
        yDeg:=yDeg+1;
      end;
      if GetAsyncKeyState(VK_RIGHT)<>0 then
      begin
        yDeg:=yDeg-1;
      end;
      if GetAsyncKeyState(VK_UP)<>0 then
      begin
        xDeg:=xDeg+1;
      end
      else if GetAsyncKeyState(VK_DOWN)<>0 then
      begin
        xDeg:=xDeg-1;
      end;
    end;procedure TfrmMain.FormResize(Sender: TObject);
    begin
      SetView;
    end;procedure TfrmMain.FormClick(Sender: TObject);
    begin
      if opdlg.Execute then
         objMdl.LoadFromFile(opdlg.FileName); 
    end;end.