22년도 1학기 병렬프로그래밍 기말 프로젝트에서 우리 팀은 콘웨이의 생명 게임을 CUDA로 구현해보기로 했었는데
만들어서 CPU에서 돌리는거와 커널에서 돌리는 시간 차를 발표했었다. 본인은 이것만 하기에는 인터넷에 좀 흔한 프로젝트 주제로 알려져있고 그래서 위에서 언급한거 외에 커널에서는 콘웨이의 생명 게임을 기반으로 N*N 크기의 맵에서 계속 생명게임이 진행되어 한 칸에 해당하는 세포가 살았다가 죽었다가 반복하는데
여기에 플레이어가 추가 되어 제한 시간동안 방향키를 입력해 플레이어를 움직여 살아있는 세포를 먹으면 점수가 쌓이는 그런 게임을 만들어보면 어떨까 생각해서 개인 시간동안 짧고 무식하게 만들어봤다
원래 게임을 만들기 위해서는 객체별로 프로그래밍하고 더블버퍼등 사용해서 고급지게 만들어야겠지만 저때는 앞에 말한 내용도 잘 모르는 상태였고 급하게 만든것임을 밝힘
코드 : https://github.com/soonsoo3595/Parallel_CUDA/blob/main/Play.cu
GitHub - soonsoo3595/Parallel_CUDA: Parallel Programming using CUDA
Parallel Programming using CUDA. Contribute to soonsoo3595/Parallel_CUDA development by creating an account on GitHub.
github.com
간단하게 그냥 설명하자면
-1은 벽, 0은 죽은 세포, 1은 살아있는 세포, 2는 플레이어인데 처음 시작 위치는 벽을 제외한 맨쪽 왼위이다.
1초에 한번씩 맵이 렌더링된다. 근데 이게 좀 무식하게 구현하다보니까 깜빡거리고 키보드 입력을 받으면 입력버퍼에 저장되고 1초에 한번씩 꺼내지는것같아서 키입력이 느리게 받아진다고 느껴진다.
그리고 플레이어는 살아있는 세포로 취급되어져서 생명 게임 규칙에서 살아있는 상태로 판정되어 다음 주기의 생명 게임이 그려진다.
그러나 이 것은 발표에 쓰이지 않았다 주제랑 맞지않는다고 생각해서 제외되었기때문 ㅜㅜ 아쉽긴하지만 그냥 취미로 만들어봤다 정도로 간직하려고한다
'공부 > 학교팀플' 카테고리의 다른 글
건국대학교 2022년 1학기 소프트웨어공학 기말 발표 (0) | 2022.06.22 |
---|