用C语言画“动态圆受控旋转”

Python017

用C语言画“动态圆受控旋转”,第1张

我把黄色改成红色了,这样好看一些,任意键停止!该程序我是在turboc2.0环境下编译通过的!注意我用initgraph()时说明我turboc是放在c盘下的.

#include<graphics.h>

#include<conio.h>

#include<dos.h>

main()

{

int graphdrive=DETECT,graphmode

int x,y,radius,endangle,stangle,m=359,n=360

initgraph(&graphdrive,&graphmode,"c:\turboc2\bgi")

x=300

y=200

radius=100

do

{

cleardevice()

setcolor(WHITE)

setlinestyle(SOLID_LINE,1,1)

circle(x,y,radius)

stangle=m

endangle=n

setcolor(RED)

setlinestyle(SOLID_LINE,1,3)

arc(x,y,stangle,endangle,radius)

n--

m--

sleep(1)

if(n==1)

{

m=359

n=360

}

}while(!kbhit())

getch()

closegraph()

return 0

}

这源代码应该有个桌面类(Table),球类(Sphere),游戏类等等。我用C++

#pragma once (Table.h)

#endif // _MSC_VER >1000

#include "Base.h"

#define MESH_D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1)

class CTable:public CBase

{

public:

DWORD Render()

CTable(LPDIRECT3DDEVICE8 pD3DDevice,LPSTR pFilename)

virtual ~CTable()

LPD3DXMESH GetMeshTablePointer()

private:

void TransformTable()

LPDIRECT3DDEVICE8 m_pD3DDevice

DWORD m_dwNumMaterials

LPD3DXMESH m_pMeshTable

D3DMATERIAL8 *m_pMeshTableMaterials

LPDIRECT3DTEXTURE8 *m_pMeshTableTextures

}#endif

#include "Table.h" (Table.cpp)

CTable::CTable(LPDIRECT3DDEVICE8 pD3DDevice,LPSTR pFilename)

{

LPD3DXBUFFER pMaterialsBuffer=NULL

LPD3DXMESH pMeshTable=NULL

m_pD3DDevice=pD3DDevice

if(FAILED(D3DXLoadMeshFromX(pFilename,D3DXMESH_MANAGED,m_pD3DDevice,NULL,

&pMaterialsBuffer,&m_dwNumMaterials,&pMeshTable)))

{

m_pMeshTable=NULL

m_pMeshTableMaterials=NULL

m_pMeshTableTextures=NULL

LogError("<li>Table Mesh '%s' failed to load",pFilename)

return

}

D3DXMATERIAL *matMaterials=(D3DXMATERIAL*)pMaterialsBuffer->GetBufferPointer()

//Create two arrays. One to hold the materials and one to hold the textures

m_pMeshTableMaterials=new D3DMATERIAL8[m_dwNumMaterials]

m_pMeshTableTextures=new LPDIRECT3DTEXTURE8[m_dwNumMaterials]

for(DWORD i=0i<m_dwNumMaterialsi++)

{

//Copy the material

m_pMeshTableMaterials[i]=matMaterials[i].MatD3D

//Set the ambient color for the material(D3DX does not do this)

m_pMeshTableMaterials[i].Ambient=m_pMeshTableMaterials[i].Diffuse

D3DCOLORVALUE rgbaSpecular=

m_pMeshTableMaterials[i].Specular=rgbaSpecular

m_pMeshTableMaterials[i].Power=50.0f