开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2409|回复: 6
收起左侧

[已解决] 大牛帮我翻译下(VS2005翻译成易语言)!

 关闭 [复制链接]
结帖率:100% (13/13)
发表于 2013-12-8 17:33:57 | 显示全部楼层 |阅读模式   湖南省株洲市
20精币
  • // 头文件  
  • #include<windows.h>  
  • #include<d3d9.h>  
  • #include<d3dx9.h>  
  • #include<cstdio>  
  •   
  • #define DIRECTINPUT_VERSION 0x0800 // 使用DirectInput前需要确定DirectInput版本  
  • #include<dinput.h>  
  •   
  • // 库文件  
  • #pragma comment( lib, "d3d9.lib")  
  • #pragma comment( lib, "d3dx9.lib")  
  • #pragma comment( lib, "dinput8.lib")  
  • #pragma comment( lib, "dxguid.lib")  
  •   
  • // 定义的宏  
  • #define JCLASSNAME  "优化的程序"  
  • #define JCAPTION  "程序演示"  
  • #define WINDOW_WIDTH 320  
  • #define WINDOW_HEIGHT 240  
  • #define FULLSCREEN  FALSE// 全屏非全屏的标识符  
  • #define SAFE_RELEASE( p ) if ( p ) p->Release(); p = NULL;  
  • #define KEYDOWN( name, key ) ( name[key] & 0x80 )  
  •   
  • // 调整编译器设置  
  • #pragma warning( disable: 4100 )  
  •   
  • #if FULLSCREEN     // 全屏非全屏的设置  
  • #define WINDOW_STYLE WS_EX_TOPMOST | WS_POPUP | WS_VISIBLE  
  • #else  
  • #define WINDOW_STYLE WS_CAPTION | WS_SYSMENU  
  • #endif  
  •   
  • /*----------------------------------------------------------------------------*/  
  • // 全局变量  
  • LPDIRECT3D9 g_JD3D = NULL;// D3D结构体  
  • LPDIRECT3DDEVICE9 g_JDevice = NULL;// D3D装置结构体  
  • LPD3DXFONT g_FPSFont = NULL;// 指向FPS字体的指针  
  • RECT g_FPSFontPos = { WINDOW_WIDTH - 100, WINDOW_HEIGHT - 15,   
  • WINDOW_WIDTH, WINDOW_HEIGHT};// FPS所在的矩形框  
  • INT g_FrameCount = 0;// 帧的计数器  
  • INT g_lastTime = 0;// 记录上一秒的时间  
  • INT g_currentTime = 0;// 记录当前的时间  
  • CHAR g_FPSstr[25] = { 0 };// 记录当前帧率的字符串  
  • IDirect3DSurface9* g_Surface = NULL;// 平面的指针  
  • LPDIRECT3DTEXTURE9 g_pTexture = NULL;// 图像纹理指针  
  • LPD3DXSPRITE g_pSprite = NULL;// 子图形指针  
  • RECT g_SpriteRect = { 0, 0, 0, 0 };// 子图形所在的矩形  
  • D3DXVECTOR3 g_vCenter( 0.0f, 0.0f, 0.0f );// 子图形中心的向量  
  • D3DXVECTOR3 g_vPosition( WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2, 0.0f );// 子图形位置的向量  
  •   
  • LPDIRECTINPUT8 g_JInputObject = NULL;// DirectInput8的对象  
  • LPDIRECTINPUTDEVICE8 g_JInputDevice = NULL;// DirectInput的设备  
  •   
  • /*----------------------------------------------------------------------------*/  
  • // 初始化Direct3D函数  
  • BOOL InitializeD3D( HINSTANCE hInst, HWND hWnd )  
  • {  
  • D3DDISPLAYMODE displayMode;  
  •   
  • //创建D3D对象  
  • g_JD3D = Direct3DCreate9( D3D_SDK_VERSION );  
  • if ( g_JD3D == NULL )  
  •   return FALSE;  
  •   
  • // 获取显示器的模式  
  • if ( FAILED( g_JD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &displayMode ) ) )  
  •   return FALSE;  
  •   
  • // D3D显示的参数  
  • D3DPRESENT_PARAMETERS jd3dpp;  
  • ZeroMemory( &jd3dpp, sizeof( jd3dpp ) );  
  •   
  • // 初始化D3DPRESENT_PARAMETERS  
  • jd3dpp.Windowed               = !FULLSCREEN;  
  • jd3dpp.BackBufferWidth    = WINDOW_WIDTH;  
  • jd3dpp.BackBufferHeight    = WINDOW_HEIGHT;  
  • jd3dpp.SwapEffect             = D3DSWAPEFFECT_DISCARD;  
  • jd3dpp.BackBufferFormat       = displayMode.Format;  
  • jd3dpp.EnableAutoDepthStencil = TRUE;  
  • jd3dpp.AutoDepthStencilFormat = D3DFMT_D16;  
  •   
  • // 创建设备  
  • if(FAILED( g_JD3D->CreateDevice( D3DADAPTER_DEFAULT,   
  •   D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING,   
  •   &jd3dpp, &g_JDevice ) ) )  
  •   return FALSE;  
  •   
  • // 设置渲染状态  
  • g_JDevice->SetRenderState( D3DRS_LIGHTING, FALSE );  
  • g_JDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE );  
  •   
  • // 创建字体  
  • if ( FAILED( D3DXCreateFont( g_JDevice, 15, 0, 1, 1, 0, DEFAULT_CHARSET,  
  •   OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,  
  •   "Impact", &g_FPSFont ) ) ) return FALSE;  
  •   
  • // 创建离屏平面  
  • if ( FAILED ( g_JDevice->CreateOffscreenPlainSurface( WINDOW_WIDTH, WINDOW_HEIGHT,  
  •   D3DFMT_X8R8G8B8, // 平面格式  
  •   D3DPOOL_DEFAULT, // 内存池格式  
  •   &g_Surface,        // 保存结果的缓存  
  •   NULL) ) )        // 保留参数  
  •   return FALSE;  
  •   
  • // 载入背景平面图像  
  • if ( FAILED( D3DXLoadSurfaceFromFile( g_Surface, NULL, NULL, "测试的临时用图.png",   
  •   NULL, D3DX_DEFAULT, 0, NULL ) ) ) return FALSE;  
  •   
  • // 载入子图像(精灵图像)  
  • D3DXIMAGE_INFO info;  
  • D3DXGetImageInfoFromFile( "采用Alpha混合的精灵图.png", &info );// 提取图片信息  
  • if ( FAILED( D3DXCreateTextureFromFileEx( g_JDevice,   
  •   "采用Alpha混合的精灵图.png", info.Width, info.Height, D3DFMT_FROM_FILE,   
  •   0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_DEFAULT,   
  •   D3DCOLOR_XRGB( 240, 194, 180 ), NULL, NULL, &g_pTexture ) ) ) return FALSE;  
  •   
  • // 设置min和mag滤波  
  • g_JDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );  
  • g_JDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );  
  •   
  • // 设置三角形的背面不被剔除  
  • g_JDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );  
  •   
  • // 创建子图形  
  • if ( FAILED( D3DXCreateSprite( g_JDevice, &g_pSprite ) ) ) return false;  
  • g_SpriteRect.right = info.Width;  
  • g_SpriteRect.bottom = info.Height;  
  •   
  • // 创建DirectInput  
  • if ( FAILED( DirectInput8Create( hInst, DIRECTINPUT_VERSION, IID_IDirectInput8,   
  •    (void**)&g_JInputObject, NULL ) ) )  
  • {  
  •   MessageBox( NULL, "创建DirectInput对象失败。", "程序消息", MB_OK );  
  •   return FALSE;  
  • }  
  •   
  • // 创建DirectInput设备  
  • if ( FAILED( g_JInputObject->CreateDevice( GUID_SysKeyboard,  
  •   &g_JInputDevice, NULL ) ) )  
  • {  
  •   MessageBox( NULL, "创建DirectInput设备失败。", "程序消息", MB_OK );  
  •   return FALSE;  
  • }  
  •   
  • // 设置数据格式  
  • if ( FAILED( g_JInputDevice->SetDataFormat( &c_dfDIKeyboard ) ) )  
  • {  
  •   MessageBox( NULL, "设置数据格式失败。", "程序消息", MB_OK );  
  •   return FALSE;  
  • }  
  •   
  • // 设置合作等级  
  • if ( FAILED( g_JInputDevice->SetCooperativeLevel( hWnd,  
  •   DISCL_NONEXCLUSIVE | DISCL_FOREGROUND ) ) )// 非独占有,程序前台控制有效  
  • {  
  •   MessageBox( NULL, "设置合作等级失败。", "程序消息", MB_OK );  
  •   return FALSE;  
  • }  
  •   
  • // 获取输入设备  
  • if ( FAILED( g_JInputDevice->Acquire() ) )  
  • {  
  •   MessageBox( NULL, "取得输入装置失败。", "程序消息", MB_OK );  
  •   return FALSE;  
  • }  
  •   
  • return TRUE;  
  • }  
  • /*----------------------------------------------------------------------------*/  
  • // 释放所有资源  
  • void ReleaseMemory( void )  
  • {  
  • SAFE_RELEASE( g_JD3D );  
  • SAFE_RELEASE( g_JDevice );  
  • SAFE_RELEASE( g_FPSFont );  
  • SAFE_RELEASE( g_Surface );  
  •   
  • g_JInputDevice->Unacquire();  
  • SAFE_RELEASE( g_JInputDevice );  
  •    
  • SAFE_RELEASE( g_JInputObject );  
  • }  
  • /*----------------------------------------------------------------------------*/  
  • // 程序的交互  
  • void GameInteraction( void )  
  • {  
  • char state[256];// 键盘的状态  
  •    
  • // 取得设备的状态  
  • if ( FAILED( g_JInputDevice->GetDeviceState( sizeof( state ), state ) ) )  
  • {  
  •   MessageBox( NULL, "获取设备状态失败。", "程序消息", MB_OK );  
  •   return;  
  • }  
  •    
  • // 检测某个按键是否按下  
  • if ( KEYDOWN( state, DIK_LEFT ) )  
  •   g_vPosition.x -= 2;  
  • if ( KEYDOWN( state, DIK_RIGHT ) )  
  •   g_vPosition.x += 2;  
  • if ( KEYDOWN( state, DIK_UP ) )  
  •   g_vPosition.y -= 2;  
  • if ( KEYDOWN( state, DIK_DOWN ) )  
  •   g_vPosition.y += 2;  
  • }  
  • /*----------------------------------------------------------------------------*/  
  • // 渲染屏幕  
  • void RenderScene( void )  
  • {  
  • // 计数器开始计数(以毫秒计)  
  • g_currentTime = GetTickCount();  
  • if ( g_currentTime - g_lastTime > 1000 )  
  • {  
  •   sprintf_s( g_FPSstr, 25, "当前FPS:%d", g_FrameCount );  
  •   g_lastTime = g_currentTime;  
  •   g_FrameCount = 0;  
  • }  
  • else g_FrameCount++;  
  •   
  • g_JDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,   
  •   D3DCOLOR_XRGB( 0, 0, 0), 1.0f, 0);// 清除屏幕  
  •   
  • // 载入背景平面图像  
  • IDirect3DSurface9* backbuffer = NULL;  
  • g_JDevice->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO,   
  •   &backbuffer );// 获取后台缓存  
  • g_JDevice->StretchRect( g_Surface, NULL,   
  •   backbuffer, NULL, D3DTEXF_NONE );// 将后台矩形放入前景矩形  
  •   
  • // 开始渲染  
  • g_JDevice->BeginScene();  
  •   
  • // 渲染Sprite  
  • g_pSprite->Begin( D3DXSPRITE_ALPHABLEND );// 以Alpha混合形式进行渲染  
  • g_pSprite->Draw( g_pTexture, &g_SpriteRect, &g_vCenter, &g_vPosition,  
  •   D3DCOLOR_XRGB( 255, 255, 255 ) );  
  • g_pSprite->End();// 结束渲染  
  •   
  • g_FPSFont->DrawText( NULL, g_FPSstr, -1, &g_FPSFontPos, DT_CENTER,  
  •   D3DCOLOR_XRGB( 255, 255, 255 ) );// 显示字体  
  •   
  • // 结束渲染  
  • g_JDevice->EndScene();  
  •   
  • g_JDevice->Present( NULL, NULL, NULL, NULL );  
  • }  
  • /*----------------------------------------------------------------------------*/  
  • // 回调函数,用来处理消息  
  • HRESULT CALLBACK MyAppProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )  
  • {  
  • switch ( msg )  
  • {  
  • case WM_DESTROY:  
  •   PostQuitMessage( 0 );  
  •   return 0;  
  • case WM_KEYDOWN:  
  •   if ( wParam == VK_ESCAPE ) PostQuitMessage( 0 );  
  •   return 0;  
  • }  
  • return (HRESULT)DefWindowProc( hWnd, msg, wParam, lParam );  
  • };  
  • /*----------------------------------------------------------------------------*/  
  • // 程序的入口,主函数  
  • INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR cmd, INT show )  
  • {  
  • // 设置Window Class结构并且注册它  
  • WNDCLASSEX jWndCls = { sizeof( jWndCls ), CS_CLASSDC, MyAppProc, 0L, 0L, hInst,   
  •   NULL, LoadCursorFromFile( "自定义鼠标指针.ani" ), 0, NULL, JCLASSNAME, NULL };  
  • RegisterClassEx( &jWndCls );  
  •   
  • // 设置窗口并且显示窗口  
  • HWND hWnd = CreateWindow( JCLASSNAME, JCAPTION, WINDOW_STYLE, 100, 40,  
  •   WINDOW_WIDTH, WINDOW_HEIGHT, GetDesktopWindow(), NULL, jWndCls.hInstance, NULL);  
  • if ( hWnd == NULL )  
  •   return FALSE;  
  • ShowWindow( hWnd, SW_SHOWDEFAULT );  
  • UpdateWindow( hWnd );  
  •   
  • // 初始化设置  
  • if ( InitializeD3D( hInst, hWnd ) == FALSE )  
  •   return FALSE;  
  •   
  • // 进入消息循环  
  • MSG msg;  
  • ZeroMemory( &msg, sizeof( msg ) );  
  • while( msg.message != WM_QUIT )  
  • {  
  •   if ( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )  
  •   {  
  •    TranslateMessage( &msg );  
  •    DispatchMessage( &msg );  
  •   }  
  •   else  
  •   {  
  •    RenderScene();// 渲染屏幕  
  •    GameInteraction();// 游戏的交互  
  •   }  
  • }  
  •   
  • // 程序结束,释放内存所有资源  
  • ReleaseMemory();  
  •   
  • // 解除窗口注册  
  • UnregisterClass( JCLASSNAME, jWndCls.hInstance );  
  • return ( INT ) msg.wParam;  
  • }  

最佳答案

查看完整内容

别说20块,200可能都没人理 现在有点技术的开价都是K来算

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:91% (48/53)

签到天数: 7 天

发表于 2013-12-8 17:33:58 | 显示全部楼层   江西省萍乡市

别说20块,200可能都没人理
现在有点技术的开价都是K来算
回复

使用道具 举报

结帖率:100% (13/13)
 楼主| 发表于 2013-12-13 11:45:15 | 显示全部楼层   湖南省株洲市
唉,现在大牛越来越懒了或者还是很少吧
回复

使用道具 举报

结帖率:100% (1/1)
发表于 2013-12-18 15:26:59 | 显示全部楼层   浙江省嘉兴市
这个是啥东西看起来很高级的样子
回复

使用道具 举报

结帖率:100% (1/1)
发表于 2013-12-29 20:38:01 | 显示全部楼层   湖南省衡阳市
感觉好像3d引擎的说~
回复

使用道具 举报

结帖率:100% (13/13)
 楼主| 发表于 2014-1-10 18:26:40 | 显示全部楼层   湖南省株洲市
20元RMB悬赏!
回复

使用道具 举报

结帖率:0% (0/2)
发表于 2016-11-27 10:03:05 | 显示全部楼层   广西壮族自治区北海市
留个脚印。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表