그래도... 지난 십여년을 통털어 학교과제라고 이실직고부터 하고 시작하는 분은 처음 봅니다.
XOR 을 이용해서 구현한 성실한 학생이 kkd00105 님과 저 때문에 F 를 받을 가능성이 높습니다. (클릭할 때 마다 변하는 색 값에 대한 대응이 좀 어설프면 살아남을 수도 있을 듯 한데...)
그러니 얼른 문자로 알려서 미안하다 말하고 다들 다른 방도를 찾으라고 말하세요.
1. maskbit를 선언합니다.
예를 들어,
00000000
00100000
00110000
00111000
01111100
11111110
00011000
00011000
이런 식이겠지요? 16진수로 표기합니다.
2. 커서가 출력될 화면을 캡쳐해옵니다.(나중에 복구에도 필요합니다)
3. 캡쳐한 이미지의 비트배열과 위 mask bit로 논리 and 연산을 수행합니다.
--> 결과적으로 배경화면에서, 커서 모양이 mask될 것입니다.
4. mask된 부분에 커서의 색깔(흰색?)을 채우거나, 미리 만들어진 비트이미지로 결합합니다.
5. 완성된 이미지를 해당 위치에 출력합니다.
6. 커서가 이동하면 2에서 캡쳐한 이미지로 먼저 복구해주고, 다시 2~5를 반복합니다.
어렵네요.
저라면 이럴겁니다.
- 잘되는 책이나 예제소스 보고 따라하기
- 지워진 좌표를 얻어서 채우기
- 한줄씩 지워서 확인하기
- 함수에 인자값. 리턴값. 오류값 확인하기
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
그래도... 지난 십여년을 통털어 학교과제라고
그래도... 지난 십여년을 통털어 학교과제라고 이실직고부터 하고 시작하는 분은 처음 봅니다.
XOR 을 이용해서 구현한 성실한 학생이 kkd00105 님과 저 때문에 F 를 받을 가능성이 높습니다. (클릭할 때 마다 변하는 색 값에 대한 대응이 좀 어설프면 살아남을 수도 있을 듯 한데...)
그러니 얼른 문자로 알려서 미안하다 말하고 다들 다른 방도를 찾으라고 말하세요.
..?무슨얘기를 하시는건지..
누구한테 미안하다 하라는건지.. 끄응.. 저걸 해결해가는게 과제가아니라 제가 저걸응용해서 게임 만들어가는게 텀프로젝트인데요..
부족한 부분을 메워오라던가... 식으로 퀴즈 형식의
부족한 부분을 메워오라던가... 식으로 퀴즈 형식의 과제를 내주는 분들이 꽤 계셔서 그런 줄로 알았습니다.
미안하다할 필요없으니 잘 됐네요.
커서 색이 C 라고 할 때,
*pixel ^= C;
하면 pixel 의 색이 (C는 아니지만 최소한 원래의 색과 확실히 다른 어떤 값으로) 바뀌고,
*pixel ^= C;
를 다시하면 원래대로 복구됩니다. 단, C 는 바뀌면 안됩니다.
결과적으로,
적으신 코드에서 (아마도 본인이 추가하신) 여섯 줄을 삭제하고 두 줄을 수정해야하고, 커서 색이 바뀌기 전과 후에도 한 줄씩 추가해야합니다.
조금 더 나간다면,
cursor shape 까지 바꾸기 위한 mask 추가도 가능한데... mask pattern data 를 제외하면... 코드에선 한 줄 수정하는 쪽이 한 줄 추가하는 쪽보다 성능이 더 좋을 듯 합니다.
이왕에 성능얘기가 나온거,
커서의 rgb 값을 각각 유지하면서 매번 관련함수에 각각의 매개변수로 전달해서 반복적인 조합을 하게 만들 필욘 없겠죠.
상식적인 저 수준에서 직접 프로그래밍해서 게임을 만드는게 프로젝트인 모양이네요.
framebuffer 를 직접 이용한다면 게임이 진행되는 동안은 콘솔을 끄는게 좋습니다. 하다못해 화면 보호기(blank/unblank)라도 꺼야죠.
이것과 관련된 코드는 일종의 관용구처럼 인용되는 저수준 액션이라 copy&paste 해도 상관없겠고요.
키보드 관련해서 input evdev 를 그냥 쓰시겠다면, https://android.googlesource.com/platform/system/core/+/kitkat-mr2.2-release/toolbox/setconsole.c 정도로 충분합니다.
1. maskbit를 선언합니다. 예를
1. maskbit를 선언합니다.
예를 들어,
00000000
00100000
00110000
00111000
01111100
11111110
00011000
00011000
이런 식이겠지요? 16진수로 표기합니다.
2. 커서가 출력될 화면을 캡쳐해옵니다.(나중에 복구에도 필요합니다)
3. 캡쳐한 이미지의 비트배열과 위 mask bit로 논리 and 연산을 수행합니다.
--> 결과적으로 배경화면에서, 커서 모양이 mask될 것입니다.
4. mask된 부분에 커서의 색깔(흰색?)을 채우거나, 미리 만들어진 비트이미지로 결합합니다.
5. 완성된 이미지를 해당 위치에 출력합니다.
6. 커서가 이동하면 2에서 캡쳐한 이미지로 먼저 복구해주고, 다시 2~5를 반복합니다.
비슷한 테크닉으로 sprite, mask bit,
비슷한 테크닉으로 sprite, mask bit, cursor등의 키워드로 검색하면 자료가 제법 많을 것입니다.
댓글 달기