쓰레드 관련....
난초
질문 제목 : 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, 등을 모두 호출해서 사용하시면 되요
일반적인 게임은 말씀하신것 처럼 각각의 스레드로 작동되지는 않습니다
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2654930 | 도와주십시요 ㅜㅜ 자료구조 ㅜㅜ | 도널드 | 2024-05-15 |
2654881 | PID 모듈 검색 부분 질문합니다 . | 이름없음 | 2024-05-14 |
2654850 | 조건에 만족하는 다음 수를 찾고 싶습니다. | 초엘 | 2024-05-14 |
2654790 | 두파일간 byte단위 txt파일 복사 中 | 슬찬 | 2024-05-14 |
2654768 | 사전만들기 입니다. | 여우By | 2024-05-13 |
2654716 | c언어 고수님들 답좀적어주세요 급합니다 ㅠㅠ | 한말글 | 2024-05-13 |
2654688 | c언어 ㅠㅠ 너 무 어려 워요 ㅠ 도와주세요!! | 별빛 | 2024-05-13 |
2654659 | 구구단 소스 궁금한 점 도움 부탁드립니다! (2) | 미련곰팅이 | 2024-05-12 |
2654633 | 오류가 무었인가요..? (2) | 단순랩퍼 | 2024-05-12 |
2654603 | 어디가 잘못된지를 모르겠습니다. 한 번 봐주세요...ㅠ (2) | 글고운 | 2024-05-12 |
2654574 | 소스 추가좀 부탁드립니다. (등수 출력) | 크리미걸 | 2024-05-12 |
2654550 | 피보나치수열. (3) | 중독적 | 2024-05-11 |
2654521 | c초보 빙고관련게임... | 달콤이 | 2024-05-11 |
2654491 | 10진수를 2진수로 바꾸는법 (8) | 아잉 | 2024-05-11 |
2654412 | 빅오를 구하고 싶어요~ | 애기 | 2024-05-10 |
2654381 | 혼자 연구하는 c/c++ 질문 | 아잉 | 2024-05-10 |
2654352 | 행렬크기를 scanf로 입력받을수도 있나요..? | VanilLa | 2024-05-10 |
2654293 | 첫시작값과 끝값의 사이에 존재하는 정수들의 합을 구하는 것 (5) | 해긴 | 2024-05-09 |
2654185 | 64bit 환경에서 자료형의 크기가 좀궁그해요(완료) 더궁금한게 생겻어요(추가) (2) | 빈길 | 2024-05-08 |
2654152 | 확장자 exe로 변경 (1) | 한 | 2024-05-08 |