이 프로그램은..

강화 하다가, 돈도 없고 해서.. 생각난김에 약1분만에 만든겁니다.
그만큼 내용없는 소스고.. 소스는 다음 그림과 같습니다 ㅡ_ㅡ..

확률은 대체적으로 에코 인벤에 있는걸 보고 따왔구요..
테스트 결과.. 평균 6,7강 정도 더군요..

참고 하시길..

아래 소스입니다.
사용자 삽입 이미지
사용자 삽입 이미지

8bit(256색) bitmap 이하에서는 팔레트라는것을 가지고 있다.
이 팔레트의 값만 변경하면, 같은 그림에 색만 다르게 해서 사용하는 효과를 얻을수 있다.
즉 스프라이트를 재활용할 수 있다.

사용방법은..
1. 그림파일을 열고 (반드시 bmp파일, 그리고 256색 이하만)
2. 밑의 팔레트에서 변경하고자 하는 팔레트를 클릭, 변경
3. 전체 팔레트를 바꾸고 싶으면 Option 에서 숫자를 적어주고 Refresh 버튼을 누른다
   (일종의 컴퓨터 시뮬레이팅 효과라 볼 수 있음. 게임상에선 팔레트 정보를 일정치 가산한거와 같다.)
4. 저장하고 싶으면 bmp save 버튼을 누른다.

8bit 그림 이하에서의 bmp 팔레트 가지고 장난치는 프로그램
스프라이트 재활용이나.. 관찰용도로 사용하면 좋을꺼 같다.
글구 저건 소스

#include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define BUFSIZE 512
// 소켓 함수 오류 출력 후 종료
void err_quit(TCHAR *msg)
{
 LPVOID lpMsgBuf;
 FormatMessage(
  FORMAT_MESSAGE_ALLOCATE_BUFFER|
  FORMAT_MESSAGE_FROM_SYSTEM,
  NULL, WSAGetLastError(),
  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
  (LPTSTR)&lpMsgBuf, 0, NULL);
 MessageBox(NULL, (LPCWSTR)lpMsgBuf, msg, MB_ICONERROR);
 LocalFree(lpMsgBuf);
 exit(-1);
}

// 소켓 함수 오류 출력
void err_display(char *msg)
{
 LPVOID lpMsgBuf;
 FormatMessage(
  FORMAT_MESSAGE_ALLOCATE_BUFFER|
  FORMAT_MESSAGE_FROM_SYSTEM,
  NULL, WSAGetLastError(),
  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
  (LPTSTR)&lpMsgBuf, 0, NULL);
 printf("[%s] %s", msg, (LPCTSTR)lpMsgBuf);
 LocalFree(lpMsgBuf);
}

BOOL GetIPAddr(char *name, IN_ADDR *addr)
{
 HOSTENT *ptr = gethostbyname(name);
 if(ptr == NULL){
  err_display("gethostbyname()");
  return false;
 }
 memcpy(addr, ptr->h_addr, ptr->h_length);

 for (int i=0; ptr->h_addr_list[i]; i++)
 {
  // 모든 IP주소 뽑기
  printf("다른IP주소 %2d번 : %s\n", i, inet_ntoa(*(IN_ADDR*)ptr->h_addr_list[i]));
 }

 return true;
}

BOOL GetDomainName(IN_ADDR addr, char *name)
{
 HOSTENT *ptr = gethostbyaddr((char *)&addr, sizeof(addr), AF_INET);
 if(ptr == NULL){
  err_display("gethostbyaddr()");
  return false;
 }
 strcpy(name, ptr->h_name);

 for(int i=0; ptr->h_aliases[i]; i++)
 {
  // 모든 도메인 네임
  printf("별명 : %s\n",ptr->h_aliases[i]);
 }
 return true;
}

int main(int argc, char* argv[])
{
 WSADATA wsa;
 if(WSAStartup(MAKEWORD(2,2), &wsa)!=0)
  return -1;

 char buf[256];
 printf("도메인 주소를 입력하시오! : ");
 ::gets(buf);

 IN_ADDR addr;

 if(GetIPAddr(buf, &addr)){
  printf("\nIP 주소 = %s\n", inet_ntoa(addr));

  char name[256];
  if(GetDomainName(addr, name)){
   printf("\n도메인 이름 = %s\n", name);
  }
 }

 WSACleanup();
 return 0;
}

+ Recent posts