슈팅게임 슈팅게임을 만들때 적의 이동과 총알의 생성 알고리즘이 연속해서 만들어져야 효과적으로 표현할수 있다. 그렇지않으면 코딩이 더길어진다.for 루프안에서 시분할을 할 경우 이런 자잘은 팁들은 많은 경험을 통해 얻을수 있다. //적의 생성 for ---------//적의 이동// 총알의 생성------------ 프로그래밍/알고리즘 2013.05.20
포인터사용시 주의점(C언어) 포인터는 변수를 가르키는 변수다. int*a; ---------- *a=3; printf("%d", *a); 이런식으로 사용하게되면 3을 담는 변수가 없기때문에 에러가난다. 참고 : 컴파일러에따라선 위 코드가 에러가 안날 수 있다. 그럼 같은식으로 int *b; int *c;를 선언하여 코드를 추가해보면 에러가 날 것이다. 사용법은 존재하는 변수의 주소값을 입력하는 형태로 사용한다. int b; a=&b; ------------ 위에 추가해준다. char* src = "abcde"; // 이것은 src[6] 의 배열이 만들어진것과 같다. char* a; 이경우는 불완전한 선언이다. 포인터 a 가 가르키는 변수가없기때문에 값만 입력한다면 에러를 발생시킬것이다. 그래서 위와같이 "abcde" 로 값을 대입하.. 프로그래밍/C언어 2013.05.19
C언어 strcpy의 구현문제 #include #include #include //strcpy 의 구현 void my_strcpy(char* dest, char* src); int main() { char* src="abcde"; char* a; my_strcpy(a,src); printf("%s %s",a, src); getch(); } void my_strcpy(char* dest, char* src) { int i,r; for (i=0;*(src+i)!='\0';i++)0; printf("%d",i); for (r=0;r 프로그래밍/C언어 2013.05.19
C언어 getch 사용자가 입력시까지 대==기한다. 입력문자를 받아 입력문자를 리턴한다. 입력문자를 화면에 출력하지는 않는다. 입력문자가 확장키일경우 0을 리턴한다. 사용예 int ch; // 이경우 int 값으로 해야한다. ch=getch(); // 문자를 getch()로 받아서 ch에 담을때 int자동캐스팅되어 아스키코드값으로 담긴다. if (ch==0xE0||ch==0) { ch = getch(); printf("%d", ch); } 다음은 입력한 문자와 아스키코드값으 리턴해준다. for (i=0;i 프로그래밍/C언어 2013.05.18
const 키워드 const키워드의 기본적인 기능은 상수의 정의이다. 사용법 const int i = 7; // 변수 i가 정수 7로 상수가되었다. int arr[i]; // 배열의 인수로 상수만 와야한다. i에 const 선언을 하지않을경우 error 발생 const는 선언과 동시에 초기화 해준다. 선언만 하는 경우는 참조상수화를 하는경우이다. 예를들어 함수내에서 외부변수를 인수로 갖을때 const를 사용하면 외부변수를 참조하되 변경을 하지않도록하는 안전장치로 const 키워드를 사용한다. **법칙1 const 상수의 주소값을 읽는것은 에러 const값을 읽는다는것은 그 참조대상을 변경할수있는 가능성을 주는 행위이다. 그러므로 봉쇄된다. 다음예를보자 const int i = 7; int *pi; pi=&i; //에러가남.. 프로그래밍/C언어 2013.05.18
난수생성 C언어 //설명 : rand() 함수는 난수를 발생시킨다. 보통 random() 이나 randomize()로 사용한다. 다른 방법을 소개하겠다. 위 코드는rand 함수로 0~99까지의 난수를 발생시킨다. srand는 난수를 시드를 받아서 그수에 매핑해서 난수를 발생시킨다. 범위가 일정한 난수를 그때 그때 다르게 발생하려면 시드를 계속 바꾸면서 난수를 생성하면 된다. time은 1970년 1월1일 00시00분00초 를 기준으로 주어진 시간값까지 지난 시간을 리턴해준다. NULL인경우 현재를 나타낸다. 기발하다. **참고 random 함수는 기본라이브러리에 포함되지 않은듯 하다. rand 함수 - #define Rand_MAX 0x7fff 단점 : 실행시킬때마다 난수의 발생 순서가 동일하다. (컴퓨터마다 다른지 어.. 프로그래밍/C언어 2013.05.16
C언어 소수 정수의 반올림 C언어의 예를들자 C언어의 자리수관련 알고리즘이 몇가지있다. floor(double a) 함수는 소수자리수를 잘라버린다. 수학의 가우스함수도 소수자리를 자른다. ceil(double a) 함수는 소수자리수를 무조건 올려버린다. 그럼 반올림은 어떻게 계산할까.. 생각해보자. 소수1자리 에서 반올림하려면 어떻게할까. 0.5를 원래의 수에 더한다음 floor 함수를 쓰면 어떻겠는가? 괜찮을 듯 싶다. 그럼 소수 두째짜리에서 반올림 해보자. 기본적으로 서식지정자는 반올림을 해준다. 괜히 머리아프게 하지말자... 그럼 수를 버리고싶다면 어떻게할까... 3.35인데 소수 둘째짜리를버리고 싶다.. 어떻게할까. 10을 곱하고 floor() 함수를 쓴수 다시 10으로 나눈다. 괜찮을듯 싶다. math 함수를 쓴다는게 좀.. 프로그래밍/알고리즘 2013.05.16
프로그램 실행시간을 알게하는 코드 C언어 #include #include int main() { float start, end; start = clock(); . 실행코드 . . end = clock(); printf("%f", (end-start)/CLK_TCK); } -start는 안해도 상관없겠다 start는 항상 0이므로. 프로그래밍/C언어 2013.05.16
함수내 지역변수의 활용 C++ #include class Test { public: int* point(); }; int main() { int* p; Test* t= new Test(); p=t->point(); std::cout 프로그래밍/cpp 2013.05.14
생성자와 소멸자 호출 C++ ㅁ ---------------Base ㅁㅁㅁㅁ----------Second ㅁㅁㅁㅁㅁ--------Third 세개의 클래스가 위와같은 상속을 하고있다. 생성자에는 자신의 클래스명을 출력하고, 소멸자에는 ~클래스명을 출력하게 코드를 작성했다. 두가지 객체 생성 방법을 비교해보자. CASE 1 Base *PB=new Base; cout 프로그래밍/cpp 2013.05.09