Groovy 및 Processing 화면의 상태 전환

11287 단어 processingGroovy
화면 상태를 키보드의 입력으로 전환합니다.
이스케이프 키를 누르면 모든 상태에서 응용 프로그램이 종료되기 때문에 작은 작업이 필요합니다.

동영상 목록 : LWJGL 튜토리얼
동영상은 코코

DisplayTest.groovy
package episode006

import groovy.swing.SwingBuilder
import processing.core.PApplet

import javax.swing.*

class DisplayTest extends PApplet {

    static enum State {
        INTRO, MAIN_MENU, GAME
    }

    def state = State.INTRO

    def void setup() {
        frameRate(60)
    }

    def void draw() {
        background(0, 0, 0)

        switch(state) {
            case State.INTRO:
                noStroke()
                fill(255, 0, 0) // 赤
                rect(0, 0, 640, 480)
                break
            case State.GAME:
                noStroke()
                fill(0, 255, 0) // 緑
                rect(0, 0, 640, 480)
                break
            case State.MAIN_MENU:
                noStroke()
                fill(0, 0, 255) // 青
                rect(0, 0, 640, 480)
                break
        }
    }

    def void keyPressed() {
        def isEscapeKeyPressed = false
        if (keyCode == ESC || key == ESC) {
            isEscapeKeyPressed = true
            key = 0
            keyCode = 0
        }

        switch(state) {
            case State.INTRO:
                if (key == 's') {
                    state = State.MAIN_MENU
                }
                if (isEscapeKeyPressed) {    // エスケープ
                    System.exit(0)
                }
                break
            case State.GAME:
                if (keyCode == BACKSPACE) {    // バックスペース
                    state = State.MAIN_MENU
                }
                break
            case State.MAIN_MENU:
                if (keyCode == ENTER) {  // エンター
                    state = State.GAME
                }
                if (key == ' ') {  // スペース
                    state = State.INTRO
                }
                break
        }
    }

    def void keyReleased() {
        if (keyCode == ESC || key == ESC) {
            key = 0
            keyCode = 0
        }
    }

    def void keyTyped() {
        if (keyCode == ESC || key == ESC) {
            key = 0
            keyCode = 0
        }
    }

    def static void main(args) {
        def display = new DisplayTest()
        new SwingBuilder().frame(
                title: 'Episode 6',
                defaultCloseOperation: JFrame.EXIT_ON_CLOSE,

               size: [640, 480], show: true) {
            widget(display)
        }
        display.init()
    }
}

좋은 웹페이지 즐겨찾기