DOS용으로 제작된 x86 스네이크 게임이지만 BIOS, 부트로더, OS가 필요하지 않은 버전도 있습니다.
이 게임은 Hackaday에서 다루어졌습니다.
코드를 테스트하려면 snake.asm의 모든 변경 사항에 대해 업데이트되는 온라인 데모를 볼 수 있습니다(PC에서는 화살표 키를 사용하고 모바일에서는 스와이프하세요).
코드를 직접 테스트하려면 빌드 프로세스에 대한 요구 사항을 설치하고 컴퓨터에서 실행해야 합니다.
저는 apt install nasm python3 -y
로 설치할 수 있는 nasm
및 python3
사용하고 있습니다.
테스트하려면 main.sh를 실행하고 http://localhost:8000을 엽니다.
"QR 코드에 전체 게임을 넣을 수 있습니까?"에서 영감을 얻었습니다. Hackaday에도 소개된 @itsmattkc 님의 글입니다.
jinX의 snake64를 언급하는 사람들을 위해 jinX의 성취를 폄하하지 않으면서 그의 구현은 내 것과 동일한 제한 사항을 따르지 않는다는 점에 주목하고 싶습니다. 그의 버전에서는 뱀이 오른쪽에서 왼쪽으로 직접 갈 수 있지만 jinX에서 왼쪽으로 갈 수는 없습니다. 위에서 아래로, 음식 항목이 무작위로 생성되므로 동시에 30개가 있을 수 있습니다. 일부 임의의 픽셀이 흰색으로 변합니다. 이동하려면 화살표 대신 4, 6, 8, 2 키를 사용해야 합니다. 아래쪽으로 게임을 시작해야 합니다. 움직임이 없거나 충돌이 발생하면 게임을 시작하기 전에 화면을 clear
하고, 앞서 올바른 비디오 모드를 초기화해야 하며, 상단을 통과하여 패배할 경우 다시 내려갈 수 있으며, jinX가 말했듯이 "그렇게 될 것입니다." DOSBox 터미널에서 게임을 실행하면 시작 시 포트 60h에 0(또는 50h, 80h, 0D0h...) 값이 필요합니다."
Hugi Size Coding Competition (경쟁자들이 이기기 위해 가장 작은 니블 게임을 만들어야 하는 대회)에 대해 의도적으로 언급하지 않고 있다고 말하는 수많은 사람들을 위해 여기에 그러한 의견 중 하나에 대한 답변이 있습니다(게임이 아직 133바이트였을 때부터). ):
첫째, 당신은 "Nibbles" 게임의 규칙도 읽지 않은 것 같습니다.
이 테두리 내부에는 처음에 크기가 1픽셀인 "뱀"이 자라야 합니다. 프로그램을 시작한 후 프로그램의 메인 루프가 반복될 때마다 뱀의 크기가 1픽셀 더 커집니다.
이는 단순히 뱀과 동일하지 않으며 구현하기가 훨씬 덜 어렵습니다.
둘째, 이 대회의 구현에는 다음과 같은 결함이 있습니다(좋지 않다는 것은 아니지만 제 버전이 나쁘다는 것은 아닙니다). 예를 들어 우승작의 댓글에는 다음과 같은 내용이 있습니다.
게임은 키패드 화살표 키 외에는 다른 키를 처리할 수 없습니다. DOS 프롬프트에서 Pause|nibbles를 입력한 다음 화살표 키를 눌러 게임을 시작해야 합니다.
그리고
PSP의 최상위 메모리 세그먼트는 환경에 따라 다르므로 환경에 적합한 버전이 필요합니다.
그리고 일부 특별한 구성이 필요하기 때문에 DOSBox에서는 작동하지 않습니다.
두 번째 항목부터:
이 프로그램을 시작할 때 __즉시__ 2(아래) 키를 누르세요.
그리고 사이클 수를 설정하지 않으면 작동하지 않으며, 이를 변경하면 게임이 중단되는 경우도 있습니다.
3위의 경우
게임이 즉시 시작되면 '8','4','6'을 누르되 '2'는 누르지 마십시오.
게임은 2위와 같은 방식으로 깨지지만(동일한 주기 조정이 필요함) 벽도 깨집니다.
4위 항목을 살펴보고 더 이상 시간 낭비를 하지 않겠습니다.
글쎄요, 그냥 봤는데 부팅이 안 됐어요
그리고 마지막으로 대회 참가 장소는 어디인가요? 다른 사람을 비판하기 전에 먼저 자신의 비판이 올바른지 확인하고 판단하기 전에 스스로 해보십시오.
어쨌든 피드백 주셔서 감사합니다 :)
추신: 나는 내 버전이 이상적이라고 주장하지도 않았습니다. 게시물의 주요 요점은 도움을 요청하는 것이었고, 이 댓글은 실제로 어떤 면에서 내 구현에 대해 더 나은 느낌을 갖게 했습니다. 실제 크기 최적화 경쟁에서 누군가가 제출한 것처럼 화면 위로 확장되는 한 줄의 경우 121바이트가 소요되고 전체 스네이크 게임(분명히 전체 프로그램의 작은 부분처럼 이 기능이 포함되어 있음)은 이제 12바이트만 더 필요하며, PR을 수정할 수 있다면 7바이트만 더 있으면 됩니다.
AFAIK 이것은 지금까지 만들어진 가장 작은 뱀 게임입니다.
너무 작아서 하나의 QR에 넣을 수 있습니다.
58바이트입니다.
58바이트는 얼마나 작은가요? 음, 이 텍스트 줄의 무게는 70바이트가 넘습니다.
그리고 다음 임의의 이모티콘 시퀀스도 마찬가지입니다. ??❤️?????♀️??❤️???
gcc -Os -w -xc - <<< "main;"
으로 생성된 빈 C 프로그램 linux-x86_64에서는 15776바이트입니다.
c53000b80000cd108b3f8d22e5402
1c3300fbbd0077af5e4606bc00ad4
14d5449801c739dfad10257bd9893
a74de880f83eb5079f95b88277bd8
내 버전 | MattKC 버전 | 이바라 버전 | EimaMei 버전 | |
---|---|---|---|---|
바이트 | 58 | ~1400(압축) | 2024년 | 2953 |
QR | ||||
링크 | https://github.com/donno2048/snake | https://mattkc.com/etc/snakeqr/ | https://github.com/ibara/snakeqr | https://github.com/EimaMei/snake-qr |