2009-06-06 4 views
11

오늘의 생일은 Tetris입니다. 테트리스 클론을 쓰는 것이 새로운 언어 나 플랫폼에 익숙해지는 가장 좋은 방법 중 하나라고 생각합니다. 완전히 사소한 것은 아니며 iterators 및 closure와 같은 언어 관련 구문을 학습하는 데 적합합니다.스칼라에서 테트리스를 쓰는 방법?

저는 스칼라에 대해 듣고 마침내 일부 문서를 읽고 테트리스 복제본을 작성하기로 결정했습니다. 그래서, 이것은 제 첫 스칼라 코드입니다. 기능적 구조를 사용하려고 시도했지만 스칼라 방법을 더 향상시킬 수있는 많은 것들이 있음을 확신합니다. 의견을 사용하여 제안 해주십시오. 스칼라에서 테트리스 클론의 다른 제출도 환영합니다.

실제 질문 자체는 다소 주관적이지만, 다른 사람들이이를 예제 (또는 반제) 코드로 사용할 수 있으므로이 질문이 가치 있다고 생각합니다.

편집 : 질문을 다시 말해 보겠습니다. 코드를 좀 더 스칼라로 만들려면 어떻게해야합니까?

+1

무엇이 당신의 질문입니까? SO는 코드 검토 사이트가 아닙니다. –

+4

나는 이것이 refactormycode.com에 속한다고 생각한다. – finnw

+0

테트리스 표준을 고수하는 좋은 테트리스 클론을 작성하는 것은 그리 쉬운 일이 아니다. 예를 들어 표준 체계에서 일부 블록은 격자 교차점을 중심으로 회전하고 일부 블록은 셀 중심을 중심으로 회전합니다. – ziggystar

답변

19

Edit4 :

내가 gist 여기에 있었다 원래 (2009) 코드를 이동했다.

최근 (2012 년 8 월) Scala에서 tetrix 작성에 대한 일련의 블로그 게시물을 작성했습니다. 3 년 전에 내가 물었던 몇 가지 질문에 대한 답이되기를 바랍니다.

편집가 : 사용하는 코드를 업데이트 스칼라의 Swing API@thatismatt에 의해 제안. 또한 Scala 스타일 코딩을 배우는 방법은 Programming in Scala이라는 Martin Odersky의 책을 읽는 것입니다. 불변의 데이터 구조를 사용하는 코드 업데이트 : 본질적으로 스칼라 방식 서서히 등 불변 데이터 구조, 부작용없이 기능, 패턴 매칭, 형질

Edit2가을 사용하여 기능성 스타일 필수적 스타일로 전환되고 예를 들어 Block#rotate은 자체를 수정하는 대신 새 Block 객체를 반환합니다.

편집 3 : 스칼라 2.8 RC3에서 작동하도록 코드가 업데이트되었습니다.

+1

+1 스칼라에 대한 모든 질문에 대한 답변이 거의 없습니다. – stacker

+0

스칼라 2.8 RC2에서는 컴파일되지 않습니다. 동정, 그것은 좋은 예일 것입니다. –

+1

@ Łukasz Lew, 지금 시도하십시오. 그것은 RC3와 함께 작동해야합니다. –

3

작은 의견은 scala.swing 대신 java.swing을 사용하고 있다는 것입니다. 옮겨 가면 더 많은 기능적 경험을 얻을 수 있지만 완벽한 것은 아닙니다. 자바 라이브러리를 감싸는 래퍼 일뿐입니다. 그리고 자바 배경에서 오는 경우 학습 곡선이 분명 더 가파르다 ... 어쩌면 그것이 당신이 무엇인지 알고있을지라도!

+0

javax.swing을 사용하면 컴파일에 도움이됩니다. – AlBlue

관련 문제