수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

쓰레드 관련....

난초

2023.04.01


질문 제목 : 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

혹은 첨부 파일 보시면됩니다..

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 바람

    저게..ㅋㅋ 쓰레드를 돌려보니까 실행속도가 너무 빠르더라구요.... 그래서 인자가 저렇게 들어갔습니다....ㅋㅋㅋ

    아.. 말그대로 모든 유닛의 좌표가 게속 업데이트 되는 방식을 사용하는게 일반적인방법이군요... 흠

    감사합니다 !!

  • 찬내

    1. 저 Sleep 의 인자가 500000000 로 하신 이유가 뭐에요?
    2. 일반적인 게임은 가령 1초에 한번씩 모든 AI, 모든 유닛이동좌표 를 계속 업데이트 하고
    다른 스레드에서는 AI 나 유닛의 좌표를 변형 시키는 방식이죠

  • 핑1크캣

    그럼 일반적인 게임들은 어떤식으로 프로그램이 구성되나요??
    하나의 스레드를 구성하지 않고도 가능한가요??..

    제 프로그램에서 구현해보니까 플레이어가 이동할때마다 전체적인 프로그램의 속도가 저하 됩니다...
    ㅠㅠ 그래서 플레이어의 이동은 따로 스레드로 빼야할거같아서....

  • 오나미

    스레드 익숙치 않으시니깐
    스레드 하나만 생성하시고요 그 내부에서 이동,AI, 등을 모두 호출해서 사용하시면 되요

    일반적인 게임은 말씀하신것 처럼 각각의 스레드로 작동되지는 않습니다

번호 제 목 글쓴이 날짜
2694229 단순한 질문이요 (8) 여름 2025-05-09
2694202 용돈을 가지고 할 수 있는 일을 여러가지로 출력하는 방법 좀 알려주세요! (2) 미나 2025-05-09
2694145 화면깜빡임을 없애고 싶은데요... (1) 어서와 2025-05-08
2694069 unsigned 질문입니다. 힘차 2025-05-07
2694012 전공 비전공자 개발자 (10) 말글 2025-05-07
2693984 오버로딩이 무엇인가요? (2) 헛매질 2025-05-07
2693956 PlaySound재생이 안됩니다!(C에 음악넣기) 지존 2025-05-06
2693928 &와 *의 사용에 관한 명확한 이해 제나 2025-05-06
2693903 반복문 설명좀요 ㅠㅠ (2) 란새 2025-05-06
2693869 stdio.h 는 왜 쓰는건가요? (1) 큰꽃들 2025-05-06
2693842 포인터 변수의 주소값끼리 더하는 것에 대해서 질문드립니다. (1) 진솔 2025-05-05
2693811 소수 출력;;;; 화이트캣 2025-05-05
2693788 이런 함수는 없나요? (3) 앤드류 2025-05-05
2693758 txt파일 불러와서 행렬로 저장 큰애 2025-05-05
2693727 scanf 오류 문제!! (2) 큰나래 2025-05-04
2693704 구조체 주소록 문제인데 도와주세요 (2) 도1도캣 2025-05-04
2693676 열혈강의 c언어 질문입니다 하양이 2025-05-04
2693647 12.620000 을요 12.620 으로 어떻게 표현해요? (2) 파도 2025-05-04
2693619 타이틀 코드.. 단순드립 2025-05-03
2693591 컴파일 에러에서 질문드립니다 (3) 게자리 2025-05-03
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com