坦克大战c语言代码
㈠ 求c语言funcode坦克大战代码或者文件
这个一个星期绝对做不出。至少你连基本的游戏引擎都不知道。并且坦克大战的AI(智能程序你一个月都做不出)。如果想学游戏制作,应该去学习一下一些游戏引擎!。
C语言和汇编都是硬件打交道的。要做应用软件c++算是底线了。
PS:游戏制作算是应用软件里面最难的了,不要想速成。一年估计是少不了的。
㈡ 提问,看到有人用c语言写出了坦克大战。那么我们要怎么运行呢
写出来的人用编译器编译成exe文件,直接给你你运行就行。或者你拿到的是源代码,自己用VC++之类的编译后运行也可以。
㈢ 求funcode环境下c语言坦克大战,要实现所有功能,有谢
写一个遍历循环,检察所有碰撞层的矩形,跟每发已发射未消失的子弹做判断,看子弹所在的x,y是否在矩形内,是就return 碰撞矩形的id,这发子弹的遍历结束。在碰撞层的矩形数组里消去此ID,,下次渲染更新游戏界面的时候就没有啦。 想优化的话可以以几个相邻的矩形组成高一级的大矩形,先判断子弹x,y在哪个大矩形里,再俱体到哪个碰撞小矩形。不过一般不需要,因为碰撞层不多
㈣ 急求坦克大战C++原程序编码!!!
只是部分代码,太多了,请加分后联系我
// Game.cpp: implementation of the CGame class.
//
//////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include "Game.h"
#include "resource.h"
#define SCREEN_W 640
#define SCREEN_H 480
#define OFFSETX 100
#define OFFSETY 48
#define PLAYER1_STARTX 130
#define PLAYER1_STARTY 386
#define PLAYER2_STARTX 258
#define PLAYER2_STARTY 386
#define SAFE_RELEASE(x) if(x){ x->Release(); x = NULL; }
CGame* g_pGame;
inline int random( int min, int max )
{
return (min + rand() % (max - min + 1));
}
void TRACE( LPCTSTR format, ... )
{
char buf[128];
va_list vl;
va_start(vl, format);
sprintf(buf, format, vl);
OutputDebugString( buf );
va_end(vl);
}
void CGame::OutputText( int x, int y, LPCTSTR string )
{
HDC hdc;
if( m_pddsBackBuffer &&
m_pddsBackBuffer->GetDC(&hdc) == DD_OK )
{
SetBkMode( hdc, TRANSPARENT );
SetTextColor( hdc, RGB(255,255,0) );
TextOut( hdc, x, y, string, lstrlen(string) );
m_pddsBackBuffer->ReleaseDC( hdc );
}
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CGame::CGame()
{
m_hInst = NULL;
m_hWnd = NULL;
m_bActive = FALSE;
m_bShowStats = FALSE;
m_bFullScreen = TRUE;
m_bSingle = TRUE;
m_pDD = NULL;
m_pddsFrontBuffer = NULL;
m_pddsBackBuffer = NULL;
g_pGame = this;
}
CGame::~CGame()
{
}
LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
if( g_pGame )
return g_pGame->MsgProc( hWnd, uMsg, wParam, lParam );
return DefWindowProc( hWnd, uMsg, wParam, lParam );
}
LRESULT CGame::MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
switch( uMsg )
{
case WM_ACTIVATEAPP:
if( m_bActive = (BOOL)wParam )
m_DirectInput.Acquire();
return 0;
case WM_SETCURSOR:
if( m_bFullScreen )
{
SetCursor( NULL );
return TRUE;
}
break;
case WM_CLOSE:
PostQuitMessage(0);
return 0;
case WM_MOVE:
m_bActive = TRUE;
GetClientRect( hWnd, &m_rcWindow );
ClientToScreen( hWnd, (LPPOINT)&m_rcWindow );
ClientToScreen( hWnd, (LPPOINT)&m_rcWindow + 1 );
return 0;
case WM_MOVING:
m_bActive = FALSE;
break;
case WM_KEYDOWN:
switch( wParam )
{
case VK_ESCAPE:
if( m_gameState == GS_ACTIVE )
m_gameState = GS_SPLASH;
else if( m_gameState == GS_SPLASH )
PostQuitMessage(0);
else if( m_gameState == GS_OVER )
m_gameState = GS_SPLASH;
break;
case VK_F4:
DDTerm();
m_bFullScreen = !m_bFullScreen;
DDInit();
return 0;
case VK_F5:
m_bShowStats = !m_bShowStats;
return 0;
case VK_DOWN:
case VK_UP:
if( m_gameState == GS_SPLASH )
{
m_bSingle = !m_bSingle;
return 0;
}
break;
case VK_PRIOR:
if( m_gameState == GS_ACTIVE && m_nLevel > 1 )
{
m_nLevel --;
InitLevel();
}
break;
case VK_NEXT:
if( m_gameState == GS_ACTIVE )
{
m_nLevel ++;
InitLevel();
}
break;
case VK_RETURN:
if( m_gameState == GS_SPLASH )
{
ResetGame();
return 0;
}
else if( m_gameState == GS_ACTIVE && !m_bSingle )
{
if( m_player[0].m_nLife > 1 &&
m_player[1].m_nLife <= 0 )
{
m_player[0].m_nLife --;
m_player[1].m_nLife = 1;
ResetPlayer( m_player[1] );
}
else if( m_player[1].m_nLife > 1 &&
m_player[0].m_nLife <= 0 )
{
m_player[1].m_nLife --;
m_player[0].m_nLife = 1;
ResetPlayer( m_player[0] );
}
}
break;
}
break;
}
return DefWindowProc( hWnd, uMsg, wParam, lParam );
}
BOOL CGame::Initialize( HINSTANCE hInst )
{
m_hInst = hInst;
if( !InitApplication() ||
!DDInit() ||
!InitGame() )
{
DDTerm();
return FALSE;
}
return TRUE;
}
BOOL CGame::InitApplication()
{
char szClassName[] = "BATTLECITY";
char szTitle[] = "Battle City";
WNDCLASS wc;
wc.hInstance = m_hInst;
wc.lpszClassName = szClassName;
wc.lpfnWndProc = WndProc;
wc.style = CS_DBLCLKS;
wc.hIcon = LoadIcon( m_hInst, MAKEINTRESOURCE(IDI_TANK) );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.lpszMenuName = NULL;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH );
if( !RegisterClass( &wc ) )
{
TRACE( "Error In RegisterClassEx\n" );
return FALSE;
}
m_hWnd = CreateWindow( szClassName,
szTitle,
WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU,
CW_USEDEFAULT,
CW_USEDEFAULT,
646, 505,
NULL,
NULL,
m_hInst,
NULL );
if( !m_hWnd )
{
TRACE( "Error In CreateWindow\n" );
return FALSE;
}
UpdateWindow( m_hWnd );
ShowWindow( m_hWnd, SW_NORMAL );
return TRUE;
}
int CGame::Run()
{
MSG msg;
while( TRUE )
{
if (PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE))
{
if (!GetMessage( &msg, NULL, 0, 0))
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else if( m_bActive )
{
UpdateFrame();
}
else
WaitMessage();
}
DDTerm();
return msg.wParam;
}
BOOL CGame::DDInit()
{
HRESULT hr;
hr = DirectDrawCreate( NULL, &m_pDD, NULL );
if( FAILED(hr) )
{
TRACE( "Error Create DirectDraw\n" );
return FALSE;
}
if( m_bFullScreen )
m_pDD->SetCooperativeLevel( m_hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
else
m_pDD->SetCooperativeLevel( m_hWnd, DDSCL_NORMAL );
㈤ funcode和C语言编写的坦克大战工程代码,价格好说,江湖救急
怎么说,这个
㈥ 求大神给一个在VS2010上可以运行的坦克大战C语言源程序
http://www.codefans.net/soft/19295.shtml
VS2010一般是用C#,自行下载
㈦ 我用c语言写控制台坦克大战,可是子弹发射这里不会了,我本来的想法是定时扫描然后画出子弹,但结果失败
我想看看你的代码,
㈧ 怎么用C语言写出坦克大战
这个比较复杂,三言两语讲不清楚,用C++会好些,当然C语言也是可以的,C语言由图形函数,可以用绘图方式解决,绘图函数都在graphics.h这个头文件里
㈨ 用C语言,同时接受多个按键,要怎么写代码,例如我做坦克大战,双人游戏时要控制坦克和发射子弹。
windows下是用消息队列来捕捉按键事件的,建议看下MFC,至于怎么控制坦克,用BFS和堆栈
㈩ 怎样编写用C语言编写坦克大战,俄罗斯方块,等游戏(我不是要代码)请各位高手推荐几本教材
这么问的话,说明你对编程理解还是太浅了,再慢慢修炼一段时间吧。只要坚持学习下去,某一天你会突然发现自己没看任何游戏编程的书却知道怎么编游戏了。
再说得具体一点,你现在输出字符是用printf之类的吧?研究一下怎么自己绘制一个字体,好了,你就学会绘图了。高中的时候学物理学过自由落体运动吧,站在山崖上水平扔石头的题做过吧,计算出某个时候石头的位置(xy轴座标)不难吧,写个函数,好了,你的物理引擎出来了。好了,激动人心的时刻到了,你把这函数给出的即时x、y座标用来绘制一个字体,再稍微调整一下,好了,你写完了第一个游戏:高空抛字体。