2009년 4월 25일 토요일

sdl로 ttt만드는중!!


그냥 그렇다고,,,




















지금 이모냥이긴 한데,,,
이번주 내로 되겠지?? TTT주제에,,,

헐,, 질렀다!!

헐,,, 질러버렸습니다...무려 20만원짜리 게임기!!!(nds도 13만원이면 사는데,,,ㄷㄷ)

뭐 예판이라 아직 오지도 않았지만, 베타들의 호평이 뜨겁고, 오픈소스에다가 sdk는 아스처럼 라이브러리만 던져놓고 끝이 아닌, 개발 툴을 준다니,,,

덕분데, 지금 sdl공부에 미치고 있습니다.

잠깐 sdl이라는 것에 대해 알아보면,,,

------------------------------------------------------------------------------------

단순 다이렉트미디어 계층(Simple DirectMedia Layer), SDLC 프로그래밍 언어로 짜여진 크로스플랫폼 멀티미디어 라이브러리이다. 이 라이브러리는 비디오, 오디오, 사용자 입력 등의 계층을 추상화하여, 리눅스, 마이크로소프트 윈도, 맥 OS X 등 여러 운영체제에서 실행이 가능하도록 한다.

------------------------------------------------------------------------------------
라고 위키에 적혀 있군요,,,
크로스플랫폼이란, win -> linux, mac -> win, 같이 하나의 운영체제에서 다른 운영체제(플렛폼)의 프로그램을 만들수 있도록 플렛폼을 초월한,,,,(그냥 각각 플렛폼에 이미 sdl.dll이 있어서 기본 라이브러리 역활을 해줘요,,,)

이것만 있으면 windows에서 돌아가는 프로그램이 lin, mac에서 똑같이 돌아간다는 뜻이죠,,
그래서 열심히 공부중입니다.

P.S. c++로 sdl을 써서 tictactoc을 만들려니 어렵군요,,,

2009년 4월 22일 수요일

내맘대로 강좌 C++편 7 (클래스)


저번에는 클래스에 대해서 대략 개요만 짚고 넘어갔어,,
이번에는 실제 클래스의 용례를 알려줄께

#include <iostream>

using namespace std;

class Calculator
{
private:
       double result;                           //결과를 저장할 변수
public:
       Calculator();                             //생성자
       Calculator(double a);                //오버로딩된 생성자
       double addnum(double a);        //덧셈
       double subnum(double a);        //뺄셈
       double mulnum(double a);        //곱셈
       double divnum(double a);          //나눗셈
       double modnum(double a);        //나머지
       double getresult();                     //결과
};

int main()
{
        Calculator c(3.14);
        cout << c.getresult() << endl;

        cout << c.addnum(2.8) << endl;
        cout << c.getresult() << endl;

        cout << c.subnum(1.8) << endl;
        cout << c.getresult() << endl;

        cout << c.mulnum(2.3) << endl;
        cout << c.getresult() << endl;

        cout << c.divnum(2.8) << endl;
        cout << c.getresult() << endl;

        cout << c.modnum(3) << endl;
        cout << c.getresult() << endl;
        
        return 0;
}

Calculator::Calculator()                             //생성자
{
           result=0;
}
Calculator::Calculator(double a)                //오버로딩된 생성자
{
           result=a;
}
Calculator::double addnum(double a)        //덧셈
{
           result+=a;
           return result;
}
Calculator::double subnum(double a)        //뺄셈
{
           result-=a;
           return result;
}
Calculator::double mulnum(double a)        //곱셈
{
           result*=a;
           return result;
}
Calculator::double divnum(double a)          //나눗셈
{
           result/=a;
           return result;
}
Calculator::double modnum(double a)        //나머지
{
           result%=a;
           return result;
}
Calculator::double getresult()                     //결과
{
           return result;
}

간단한 계산 클래스를 만들었어,
순식간에 만들어서 오타가 있을지도 모르니 오타지적은 환영^^
일단 지금까지의 강좌를 잘 읽었다면 어렵진 않은 소스라고 생각해.
우선 맨 처음의

class Calculator

부분은 클래스를 생성하겟다는 선언부분
그 밑의
{
}
는 클래스의 몸통이 되는거지.
그다음
private:
라는것이 있는데,
여기서 ; 가 아니라 : 라는거 주의해야되.
이거는 이 밑으로 나오는것은 클래스 내부의 숨겨진(캡슐화된) 사항이니까,
외부의 참조나 호출은 금지된다는 표시야. 이 밑으로 나오는것은 c.뭐시기 로 호출이 불가능해.

그 다음 변수선언 하고,
public:
이 있는데 이거는 private랑은 반대로,
이 밑의 것들은 외부의 접근을 허용한다. 라는 표지야.
이게 없으면 class를 만들어도 소용이 없지뭐,,,
사용할것들이 없으니,,,

그다음 main함수에 들어와서 처음나오는거
Calculator c(3.14);
이거는 Calculator클래스의 object인 c를 생성하면서, 생성자 Calculator(double a)를 호출하라는거. 생성자는 좀있다가 설명할께.

그다음은 이제 만들어놓은 갖가지 메소드를 사용해보고,,,

그밑에 Calculator:: 하고 시작하는것들 있지? 이게 메소드의 몸통을 선언하는거야.
위에서 class선언때는 프로토 타입만 선언해놨잖아? 그럼 몸통을 정의 해야지.
근데 여러클래스를 한 프로그램에서 사용한다면 같은이름의 함수를 여러 클래스에서 쓸수도 있잖아? 그래서 컴파일러가 어떤함수가 어떤 클래스껀지 알수있도록 클래스이름을 써주는거야.
그다음은 함수선언과 똑같은데, 처음에 반환형에 아무것도 안써주고, 이름이 class이름이랑 같은놈이 2개 있지? 이게 생성자야.
생성자는 object가 생성될때 호출되는 함수인데, 여기서는 일반적으로 맴버변수들의 초기화등을 담당하도록 해.
하나는 생성할때 인자가 없이 Calculator a; 식으로 선언할때 호출되는거도 다른 하나는 Calculator a(1.23); 식으로 선언될때 호출되는거야. C++은 같은이름의 함수라도 인자의 종류와 갯수가 다르다면 다른 함수로 인식하기 때문에 써먹을수 있는 방법이지.
오늘은 클래스와 생성자까지 했어. 아직은 포인터에대해 배우지 않았고, 동적인 할당과 정적인 할당, 그에앞서 배열도 안배웠으니,,, 소멸자는 나중으로 넘겨놓을께,, 여기까지 모르는거는
nateon : dcmichael@nate.com
msn : dcmichael@live.co.kr
H.P. : 010-2885-4585
또는 블로그의 댓글
로 연락하면 언제든지 답변해줄테니까 당장 숙제에 관한것말 알려달라고만 하지말고 C++을 제대로 공부해보자!!

내맘대로 강좌 JAVA편,,,ㅠㅠ


그냥 이걸로 때울께요,,
더이상 자바는 저도 아는게 없고,,,
하지만 질문을하시면 언제든지 답변은 해드릴테니,,,
보시고 모르겠는부분은
nateon : dcmichael@nate.com
msn : dcmichael@live.co.kr
로 물어보시거나 여기에 덧글(덧글은 회원가입이 필요 없어요)로 남겨주시면 
12시간 이내로 답변 해드릴테니,,,
언제나 질문은 환영이예요,,!!

2009년 4월 20일 월요일

C++ 시험 유형에 대해 대략 느낀점??(JAVA님들 참조하세요)


일단 사회시간 쪽지시험보듯 빈칸채우기 문제가 있습니다.
뭐,, 간단한 것들이지만, C++을 한글로 공부했고 문제가 한글이었으면,
쉬웠을 문제지만, 문제가 영어이다보니, 한글로 공부했을때랑 어휘때문에,
해석에 애로가 꽃피더군요,,ㄷㄷ

다음은 간단한 질문(ex>string에서 두 문자열을 더하는 연산자는? 이라던가, 서로 같지 않음을 판별하는 논리연산자는 무엇인가? 같은)이 있고,

그다음 소스의 빈칸채우기,, 이거는 기존 숙제로 내주신 문제가 거의 그대로 나왔으니,, 숙제를 다시한번 점검해보세요,

마지막 하이라이트는 함수 만들기, 간단한 작업을 하는 함수(C++은 팩토리얼 함수를 구현하라더군요,,)를 직접 코딩해야됬습니다.

자바랑 C++은 담당 교수님이 같은분이니,, 같은 유형의 문제가 나올 확률이 높네요,, 자바 공부하시는 님들께 참조가 됬으면 좋겠습니다..

그리고 항상 궁금한거 있으시면 서의성 교수님이나 저에게 물어보면 친절히 답해드립니다.
H.P 010-2885-4585
nateon : dcmichael@nate.com
msn : dcmichael@live.co.kr

2009년 4월 9일 목요일

C++숙제,,,


이제 C++패스했다고, 점점 귀찮아 집니다....ㄷㄷ

1. Julian dates. Suppose you would like to know how many days ago Columbus was born. It is tedious to figure this out by hand, because months have different lengths and because you have to worry about leap years. Many people, such as astronomers, who deal with dates a lot have become tired of dealing with the craziness of the calendar and instead represent days in a completely different way: the so-called Julian day number. That value is defined as the number of days that have elapsed since Jan. 1, 4713 B.C. A convenient reference point is that October 9, 1995, is Julian day 2,450,000.

Here is an algorithm to compute the Julian day number: Set jd, jm, jy to the day, month, and year. If the year is negative, add 1 to jy. (There was no year 0. Year 1 B.C. was immediately followed by year A.D. 1) If the month is larger than February, add 1 to jm. Otherwise, add 13 to jm and subtract 1 from jy. Then compute

long jul = floor(365.25 * jy) + floor(30.6001 * jm) + d + 1720995.0

We store the result in a variable of type long; simple integers may not have enough digits to hold the value. If the date was before October 15, 1582, return this value. Otherwise, perform the following correction:

int ja = 0.01 * jy;

jul = jul + 2 - ja + 0.25 * ja;

Now write a function

long julian(int year, int month, int day)

that converts a date into a Julian day number. Use that function in a program that prompts the user for a date in the past, then prints out how many days that is away from today's date.

이게 1번문제 이고

 

2. Write a procedure void sort2(int& a, int& b) that swaps the values of a and b if a is greater than b and otherwise leaves a and b unchanged. For example,

int u = 2;

int v = 3;

int w = 4;

int x = 1;

sort2(u, v);

/* u is still 2, v is still 3 */

sort2(w, x);

/* w is now 1, x is now 4 */
이게 2번인데,,,
1번은 무슨 juliandate라는 만년력을 구하라는 문제 같고,,
2번은 간단히 크기가 작은것을 앞으로 큰것을 뒤로 보내는 문제 같네여,, C++은 BB를 보시면 교수님의 ppt도 있고, wiley에 보시면 교재도 있으니,, 참조변수에 관한것을 좀 보시는것이 도움이 되겠네요,,

JAVA숙제,,,


요즘 정신없이 사느라 티스토리도 못들어 오네요,,,ㄷㄷ
일단 이번숙제는

1. Write a unit conversion program that asks users to identify the unit from which they want to convert and the unit to which they want to convert. Available units should be mm, cm, m, ft, and in. Define two objects of a class UnitConverter that convert between meters and a given unit.
Convert from:
in
Convert to:
mm
Value:
10
10 in = 254 mm
Use the following class as your main class:
import java.util.Scanner;

/**
   This class converts between two units.
*/
public class ConversionCalculator
{
   public static void main(String[] args)
   {
      Scanner in = new Scanner(System.in);

      System.out.println("Convert from:");
      String fromUnit = in.nextLine();

      System.out.println("Convert to:");
      String toUnit = in.nextLine();

      UnitConverter from = new UnitConverter(fromUnit);
      UnitConverter to = new UnitConverter(toUnit);

      System.out.println("Value:") ;
      double val = in.nextDouble();

      double meters = from.toMeters(val);
      double converted = to.fromMeters(meters);

      System.out.println(val+ " "+ fromUnit+ " = "+ converted
            + " "+ toUnit);
   }
}


이거입니다.
mm, cm, m, ft, in중 2개를 선택받아 서로 단위를 변환하는 계산기 문제인데요,,
UnitConverter 란 클래스를 만들어서
생성자에서는 처음 들어간 string을 갖고 처음의 단위를 계산하고, toMeter라는 함수를 이용해서 공통단위인 Meter로 고침니다. 그다음 그Meter단위 숫자를 받아서 다시 원하는 단위로 고치는,,,


순서는 이렇습니다.

1. 먼저 2개의 단위를 입력받습니다.
2.  이것을 각각 from, to라는 UnitConverter클래스에 생성자의 인자로 주어 from, to의 단위를 정합니다.
3. 그다음 from을 meter로 바꾸는 함수를 이용해 meter값을 임시변수에 넣습니다.
4. meter단위인 임시변수를 to 에 집어넣어 to 단위로 바꿈니다.
5. 이것을 출력합니다.,,,

말은 쉽지만, 이걸 하려면 if노가다나 단위변환상수를 정해놔야겠군요,,,

2009년 4월 1일 수요일

샨새교 귀엽네요,,,

만우절이벤트라니,,,
게다가 주소가 이모양이니,,,
저는 샨새교에 첩자가 들어온줄알았네요,,