이 시리즈에서는 제가 스스로 설정한 프로그래밍 과제의 진행 상황을 공유하겠습니다. 가능한 한 다양한 프로그래밍 언어로 Battlesnake를 구축해 보세요.
이 시리즈에 대한 짧은 소개는 첫 번째 게시물을 확인하세요.
GitHub에서도 내 진행 상황을 확인할 수 있습니다.
Java는 기업의 언어로, 많은 대규모 백오피스 시스템의 비즈니스 로직이 Java로 작성되어 있습니다.
나는 과거에 많은 Java 코드를 작성했지만 현재 내 프로그래밍 활동에서는 Python과 JavaScript가 그 자리를 차지하고 있습니다.
Java는 매우 읽기 쉽고 강력한 소프트웨어를 작성하는 데 사용될 수 있기 때문에(Java IDE는 리팩토링 지원이 뛰어난 경향이 있음) 여전히 일부 시스템에 적합한 언어라고 생각합니다.
Java는 이전 버전과 비교하여 개발자에게 자동 메모리 관리, 내장 컬렉션 유형 및 광범위한 표준 라이브러리 등 많은 개선 사항을 제공했습니다(물론 취향에 따라 다름). 그러나 언어는 이제 30년이 넘었고 표준 라이브러리에서 JSON을 지원하지 않는 등 시대의 분명한 징후가 있습니다(그러나 XML은 지원합니까?).
현재 기본으로 제공되는 Java를 깨끗하고 간결한 Battlesnake 구현을 구축하는 데 사용할 수 있습니까? 알아보려면 함께 읽어보세요.
Snake.java는 다음과 같습니다.
Dockerfile은 다음과 같습니다.
개발 설정은 다음과 같습니다.
솔직히 Java 표준 라이브러리에 기본 웹 서버가 있는지 Google에 검색해야 했습니다. 아마도 표준 라이브러리의 가장 오래된 부분 중 하나인 com.sun.net.httpserver.HttpServer.
에 HTTP 서버가 있는 것으로 나타났습니다(패키지 이름 기준).서버 구현을 사용하는 것은 실제로 매우 간단합니다. Battlesnake 메타데이터 요청을 처리하기 위한 초기 코드는 다음과 같습니다.
게임 로직 코드의 상당 부분은 수신 JSON 데이터를 구문 분석하는 데 사용됩니다. 표준 Java 라이브러리에는 JSON 파서가 포함되어 있지 않으며 일반적인 파서 라이브러리에는 수천 줄의 코드가 포함되어 있습니다.
많은 해킹을 통해 Battlesnake JSON을파싱할 수 있었고 그 JSON만.
다음은 JSON 구문 분석과 관련된 코드의 네 가지 함수입니다(이 함수는 필드, 개체 및 배열을 구문 분석합니다).
게임 로직의 나머지 부분은 매우 간단합니다. 가독성과 간결성을 높이기 위해 기본 Coordinate 클래스를 사용했습니다.
게임 로직이 개선될 수 있다고 확신합니다. 시도해 보는 것은 어떨까요? ?
다음은 실제 작동 중인 전체 코드입니다.
C Battlesnake의 전체 코드는 여기 GitHub에서 확인할 수 있습니다.
저의 코딩 모험을 함께 읽어보시길 바랍니다.
위 코드에 대해 어떻게 생각하는지, 또는 이 시리즈에서 어떤 프로그래밍 언어를 기대하는지 아래 댓글을 통해 알려주세요.
다음 언어까지!
위 내용은 배틀스네이크 챌린지 # 자바의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!