[C] Console에서 음악 재생
·
언어/C
.wav 파일만 사용 가능하지만 매우 간편한 PlayeSound 방식을 사용했다. #include #pragma comment(lib,"winmm.lib") void main() { sndPlaySoundA("song.wav", SND_ASYNC | SND_NODEFAULT | SND_LOOP); } main.c 파일과 같은 폴더에 있는 song.wav 파일을 무한루프(SND_LOOP)시키라는 코드다.
[C] Console RPG 제작기 (3)
·
언어/C
기존 map에 새로운 맵 3가지를 추가했다. 일단 비주얼은 마무리까지도 이 상태에서 벗어나지 않을 계획이다. 최종 맵 player는 기존과 마찬가지로 방향키를 통해 움직이고 스페이스바로 공격한다. 보스는 프레임에 따라 1️⃣앞, 뒤로 움직이고 2️⃣입에서 불을 뿜고 3️⃣하늘에서 비를 내리는 세 가지 공격을 한다. 플레이어가 공격에 맞으면 순간적으로 빨갛게 변하고 생명이 줄어든다. 보스가 가까이 있을 때 생명을 잃는 부분이나 공격을 받은 보스의 색이 붉은 색에서 검은 색으로 재빨리 돌아오지 않는 오류는 잡아야 한다. 어쨌든 처음에 구상한 비주얼이 대충은 나온 것 같아 뿌듯... https://github.com/Jujinsol/termProject_ConsoleRPG GitHub - Jujinsol/te..
[C] Console RPG 제작기 (2)
·
언어/C
하... 이걸 완성시킬 수 있을지 모르겠다... 일단 한 걸 적어보겠다. 1️⃣ 맵은 이중 배열에 때려박고 0이면 움직일 수 있는 곳, 1이면 벽으로 인식시켰다. 맵 자동화는 다음에 완성할 계획이다. 2️⃣ Player는 이동키로 움직이고 스페이스바를 두 번 누르면 Monster를 공격한다. 3️⃣ Monster는 Player가 가까이 와야 생성되며 Player가 아주 가까이 있으면 공격하고 그 전에는 Player를 따라 움직인다. 4️⃣ Player 목숨 3개가 전부 없어지면 게임이 종료되며 Q를 누르면 종료, R을 누르면 재시작된다. 시작화면은 똑같다. 저 멀리 보이는 파란 @가 맵을 탈출하는 통로다. 우리는 P를 움직이면 된다. 처음에는 A(적)이 뜨지 않았지만 일정 거리를 움직여서 A와 P의 거리..
[C] Debug Assertion Failed, format != nullptr
·
언어/C
sprintf_s(cmd, "COLOR %x%x", bg_color, text_color); 코드 오류가 뜬다며 sprintf를 사용하지 말고 sprintf_s를 사용하라는 말에 따라... sprintf_s를 사용했더니 위의 에러가 떴다. 다시 sprintf로 바꾸니 에러가 사라졌다...
[C] Console RPG 제작기 (1)
·
언어/C
console rpg 만들기 첫 번째 글이다. 대~~~충 그린 예상 화면이다. 어려울 것 같지만... 최선을 다해보자. 오늘은 처음이니까 main 화면만 만들어봤다. 검은 화면에 흰 글씨로 한글자씩 소개글이 나온다. void main() { int i; FILE* input = NULL; wchar_t script[100]; input = fopen("start.txt", "r"); fgetwc(input, "%s", script); for (i = 0; i < 100; i++) { script[i] = fgetwc(input); if (script[i] == EOF) break; } fclose(input); gotoxy(0, 10); for (i = 0; i < 100; i++) { printf("%..
[C] 재귀 함수와 for문으로 피보나치수열 찾기
·
언어/C
#define _CRT_SECURE_NO_WARNINGS #include fibo(n) { if (n
[C] strlen, strcmp, strcpy, strcat
·
언어/C
strlen : char* 타입 문자열의 길이를 알려주는 함수 strcmp : 두 문자열이 같으면 0 다르면 0이 아닌 값을 반환 char* strcpy(char* dest, const char* origin); : origin에 있는 문자열 전체를 dest로 복사 char* strcat(char* dest, const char* origin); : origin에 있는 문자열을 dest 뒤쪽에 이어 붙이는 함수
[C] 하노이탑 쌓기
·
언어/C
#include void pause() { int x; fprintf(stderr, "종료하려면 아무키나 누르세요"); getch(); } void hanoi_tower(int n, char from, char tmp, char to) { if (n == 1) printf("원판 1을 %c 에서 %c으로 옮긴다.\n", from, to); else { hanoi_tower(n - 1, from, to, tmp); printf("원판 %d을 %c에서 %c으로 옮긴다.\n", n, from, to); hanoi_tower(n - 1, tmp, from, to); } } int main(void) { hanoi_tower(4, 'A', 'B', 'C'); pause(); }
[C] 피보나치 수열 구하기
·
언어/C
#include void pause() { int x; fprintf(stderr, "종료하려면 아무키나 누르세요"); getch(); } int fib_iter(int n) { if (n == 0) return 0; if (n == 1) return 1; int pp = 0; int p = 1; int result = 0; for (int i = 2; i
[C] 구구단 + 합 구하기
·
언어/C
#define _CRT_SECURE_NO_WARNINGS #include int main() { int i, j, sum; for (i = 2; i
[C] 소수 구하기, 소수의 합 구하기
·
언어/C
#define _CRT_SECURE_NO_WARNINGS #include int isPrime(int n) { for (int i = 2; i
[C] scanf로 문자열 입력 받아 길이 알아보기
·
언어/C
int main(void) { char word[100]; scanf("%s", &word); printf("%d", (int)strlen(word)); return 0; } 간단쓰. scanf로 문자열을 입력 받아서 배열에 넣고 문자열이 들어간 길이를 알아보자!
[C] 배열 크기 순으로 정렬하기
·
언어/C
#define _CRT_SECURE_NO_WARNINGS #include #include int compare(const void* a, const void* b) { return strcmp((char*)a, (char*)b); } int main() { int arr[5] = { 2, 5, 3, 6, 11 }; qsort(arr, 5, sizeof(arr[0]), compare); for (int i = 0; i < 5; i++) printf("%d\n", arr[i]); } 순서를 정해주는 compare 함수를 지정한 뒤 qsort를 사용해서 크기 순으로 정렬해주면 된다. 배열을 역순으로 정렬하고 싶다면 int compare(const void* a, const void* b) { return st..
[C] 입력 받은 수만큼 배열 생성하기
·
언어/C
int a; scanf("%d", &a); int* arr = malloc(sizeof(int) * a); 마음 같아서는 int arr[a];처럼 바로 생성하고 싶지만 C에서는 불가능한 행동이다. malloc을 이용해 배열 크기를 지정해주자.
[C] Debug Assertion Failed!
·
언어/C
디버그가 잡히지 않고 종료되는 오류다. 포인터를 제대로 사용하지 않았다는 뜻이니 포인터 부분을 다시 한 번 확인하자. int N, M; scanf("%d %d", N, M); 난 이 부분이 문제였는데, int N, M; scanf("%d %d", &N, &M); 수정을 마치고 바로 프로그램이 정상적으로 돌아왔다.