게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
API버그인가요? ...
게시물ID : programmer_16164짧은주소 복사하기
작성자 : 호잇하잇
추천 : 0
조회수 : 562회
댓글수 : 1개
등록시간 : 2016/03/12 02:41:09
안녕하세요 포트리스같은거 대충 만들려고 하는데.
이거 총알 쏘면 포신에 총알에 한개 박히고.
총쏘면 땅이 사라지는데
버그인가요? 아니면 제가 엄청난 잘못을 저지르고 있는건가요 ㅠㅠ
정말 제발 알려주세요 ㅠㅠ 답답합니다 구조상 문제가 있을까요..
 
 
#include "stdafx.h"
#include "gameStudy.h"
 

gameStudy::gameStudy()
{
}

gameStudy::~gameStudy()
{
}

void gameStudy::render(HDC hdc)
{
 //탱크 땅
 Rectangle(hdc, _Land[1].LandRect.left, _Land[1].LandRect.top, _Land[1].LandRect.right, _Land[1].LandRect.bottom);
 Rectangle(hdc, _Tank[1].TankRect.left, _Tank[1].TankRect.top, _Tank[1].TankRect.right, _Tank[1].TankRect.bottom);
 //포신
 MoveToEx(hdc, _Tank[1].TankRect.left, _Tank[1].TankRect.top, NULL);
 LineTo(hdc, _Tank[1].BarrelPosit.x, _Tank[1].BarrelPosit.y);
 //총알
 for (int i = 0;i < BULLETMAX;i++)
 {
  if (!_Bullet[i].IsShot) continue;
  Rectangle(hdc, _Bullet[i].BulletRect.left, _Bullet[i].BulletRect.top, _Bullet[i].BulletRect.right, _Bullet[i].BulletRect.bottom);

 }
 

}

HRESULT gameStudy::init()
{
 //타이머세팅
 SetTimer(_hWnd, 0, 5, NULL);
 //초기화
 
 ZeroMemory(_Tank,sizeof(Tank)); 
 ZeroMemory(_Land,sizeof(Land));
 
 //총알초기화
  
  ZeroMemory(_Bullet, sizeof(Bullet));
 
 //탱크,지형지물 초기세팅
 _Land[1].LandPosit.x = WINSIZEX / 2;
 _Land[1].LandPosit.y = WINSIZEY;
 _Tank[1].TankPosit.x = 200;
 _Tank[1].TankPosit.y = 300;
 _Land[1].LandRect = RectMakeCenter(_Land[1].LandPosit.x, _Land[1].LandPosit.y, WINSIZEX - 100, 150);
 _Tank[1].TankRect = RectMakeCenter(_Tank[1].TankPosit.x, _Tank[1].TankPosit.y, 80, 50);

 //_Tank[1].BarrelPosit.x =_Tank[1].TankRect.right;
 //_Tank[1].BarrelPosit.y =_Tank[1].TankRect.top;
 //
 
 return S_OK;
}

void gameStudy::KeySetting()
{
 if (KEYMANAGER->isStayKeyDown(VK_RIGHT))
 {
  _Tank[1].TankPosit.x += 3;
 }
 if (KEYMANAGER->isStayKeyDown(VK_LEFT))
 {
  _Tank[1].TankPosit.x -= 3;
 }
 if (KEYMANAGER->isStayKeyDown(VK_UP))
 {
  _Tank[1].BarrelAngle += 1;
 }
 if (KEYMANAGER->isStayKeyDown(VK_DOWN))
 {
  _Tank[1].BarrelAngle -= 1;
 }
 if (KEYMANAGER->isOnceKeyDown(VK_SPACE))
 {
 
  for (int i = 0;i < BULLETMAX;i++)
  {
   if (_Bullet[i].IsShot) { continue; }
   _Bullet[i].IsShot = true;
   //포신 끝좌표값을 총알 시작좌표로.
   _Bullet[i].BulletPosit.x = _Tank[1].BarrelPosit.x;
   _Bullet[i].BulletPosit.y = _Tank[1].BarrelPosit.y;
   //해당 좌표에 총알 렉트 생성
  
   break;
  }
 }
 
 Move();
}
void gameStudy::Move()
{
 //if (!IntersectRect(&RectMake(0, 0, 0, 0), &_Land[1].LandRect, &_Tank[1].TankRect)) //탱크 추락
 //{
 // _Tank[1].TankPosit.y += 3;
 //
 //}
 //if (_Tank[1].TankRect.bottom>_Land[1].LandRect.top) //탱크 추락
 //{
 // _Tank[1].TankPosit.y += 3;
 //
 //}
 //탱크 이동
 _Tank[1].TankRect = RectMakeCenter(_Tank[1].TankPosit.x, _Tank[1].TankPosit.y, 80, 50);
 //포신 이동
 _Tank[1].BarrelPosit.x = cosf(_Tank[1].BarrelAngle*rad)*Barrellength + _Tank[1].TankRect.left;
 _Tank[1].BarrelPosit.y = -sinf(_Tank[1].BarrelAngle*rad)*Barrellength + _Tank[1].TankRect.top;
 
 //총알 이동
 for (int i = 0;i < BULLETMAX;i++)
 {
  if (!_Bullet[i].IsShot) { continue; }
  
  _Bullet[i].BulletRect = RectMakeCenter(_Bullet[i].BulletPosit.x, _Bullet[i].BulletPosit.y, 10, 10);
 
  //_Bullet[i].BulletRect.left += BULLETSPEED;
  //_Bullet[i].BulletRect.right+=BULLETSPEED;
  _Bullet[i].BulletPosit.x += BULLETSPEED;
   
 }
 
}
void gameStudy::MakeObject()
{
 //이건위에꺼랑 거의차의없는데 왜안됨?
 /*_Tank[1].BarrelPosit.x = cosf(_Tank[1].BarrelAngle*rad)*Barrellength + _Tank[1].TankPosit.x;
 _Tank[1].BarrelPosit.y = -sinf(_Tank[1].BarrelAngle*rad)*Barrellength + _Tank[1].TankRect.y;*/

}

void gameStudy::update()
{
 
 
 ////계속그려주기
 //MakeObject();
 //키처리
 KeySetting();

 //이동처리
 
 

 gameNode::update();
}

void gameStudy::release()
{
 gameNode::release();
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호