쓰레드 관련....
난초
질문 제목 : c언어 콘솔 환경에서 쓰레드 사용질문 요약 :_beginthreadex 함수를 통한 쓰레드사용방법.... 좀 알려주세요 ..
보통 쓰레드에 대해 알려면 시스템 프로그래밍쪽 공부해야하나요?질문 내용 : 안녕하세요.
c언어로 콘솔환경에서 구동되는 게임을 제작중입니다 ㅠㅠ
아직 도스창에서 벗어나지 못했습니다 ㅋㅋ
게임은 aos 형식으로 제가 좋아하는 게임인 lol을 모태로 기획했습니다.
현재 게임 제작 진행 상황이 맵구성, 플레이어 이동, 플레이어 근접 공격 정도입니다.
헌데 제가 여기서 문제되는것이 aos 게임이면 플레이어만 움직이는 것이아니라
적 ai 이며, 우리편 미니언, 상대편 미니언 등등이 다 각각 움직여야 한다는 것에서
잠시 벽에 부딪쳤습니다..
그래서 인터넷을 다 뒤지며 찾아본 방법이 쓰레드 함수를 사용하는 것인데..[code]unsigned __stdcall thread1(void *arg){while(1){playermove();sleep(500000000);}}
int main(){handle th=0;maininit();for( ; ; ) {if(getasynckeystate(vk_escape) 0) break;th = (handle)_beginthreadex(null, 0, thread1, 0, 0, null);playerattack_act();sleep(70);}closehandle(th);return 0;}[/code]
쓰레드 함수를 찾아보고 저의 소스코드에 적용시켜본 결과입니다.
먼저 maininit() 모든 데이터들을 다 초기화 하고 화면에 뿌립니다.
후에 무한루프가 돌면서 쓰레드를 부르고 쓰레드에서는playermove() 를 통해 방향키 이동을 검사합니다.
playerattack_act() 는 스페이스바가 눌렸는지 체크하는 함수입니다.눌리면 플레이어 이동방향 바로 위 또는 옆 아래에 공격 모션이 생기게 되죠.
이 소스코드 그대로 하면 플레이어 이동도 원활하고 공격 모션도 원활합니다..
이제 제가 드리고 싶은 질문은 ;;
지금 제 소스코드에서 쓰레드가 어떤 원리로 실행되는건지 쓰레드 함수들이 어떻게 동작하는건지..
또 혹시 쓰레드에 관해서 많이 알고계시다면 제가 aos 바탕으로 플레이어, 미니언들, 적ai 를 다 각각의
쓰레드로 작성하고 싶은데 어떻게 구성하면 좋을지 등등 을 좀 알려주세요 ㅜㅠㅠ
제 소스코드입니다.
https://www.dropbox.com/s/jsic6jkv9w3okwa/consoleapplication1.zip
혹은 첨부 파일 보시면됩니다..
-
바람
저게..ㅋㅋ 쓰레드를 돌려보니까 실행속도가 너무 빠르더라구요.... 그래서 인자가 저렇게 들어갔습니다....ㅋㅋㅋ
아.. 말그대로 모든 유닛의 좌표가 게속 업데이트 되는 방식을 사용하는게 일반적인방법이군요... 흠
감사합니다 !! -
찬내
1. 저 Sleep 의 인자가 500000000 로 하신 이유가 뭐에요?
2. 일반적인 게임은 가령 1초에 한번씩 모든 AI, 모든 유닛이동좌표 를 계속 업데이트 하고
다른 스레드에서는 AI 나 유닛의 좌표를 변형 시키는 방식이죠 -
핑1크캣
그럼 일반적인 게임들은 어떤식으로 프로그램이 구성되나요??
하나의 스레드를 구성하지 않고도 가능한가요??..
제 프로그램에서 구현해보니까 플레이어가 이동할때마다 전체적인 프로그램의 속도가 저하 됩니다...
ㅠㅠ 그래서 플레이어의 이동은 따로 스레드로 빼야할거같아서.... -
오나미
스레드 익숙치 않으시니깐
스레드 하나만 생성하시고요 그 내부에서 이동,AI, 등을 모두 호출해서 사용하시면 되요
일반적인 게임은 말씀하신것 처럼 각각의 스레드로 작동되지는 않습니다
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676182 | 숫자 순서대로 배열하는법 | 권뉴 | 2024-11-24 |
2676152 | 기본적인거 하나 질문드립니다. | 개미 | 2024-11-24 |
2676124 | 함수선언관련 질문이에요~...털썩..수정완료 (2) | 가지 | 2024-11-24 |
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |