DXOpal로 Undertale과 유사한 화면 만들기(계속)

11540 단어 DXOpalOpalRuby
6일째DXOpal로 Undertale 같은 화면 만들기 계속.이번에는 그림을 보여 보세요.

이미지


이번에 사용한 그림은 이거예요.

모두가 알고 있는'어서 오세요'선생님께 빌렸어요'타자 빠른 사람 삽화'..게임에서 사용한 적은 별로 없지만 상업적으로 21가지 이상의 이미지를 사용하는 것은 유료라는 것을 주의해야 한다.
  • 사용 정보
  • 그림 불러오기


    DXOpal에서 선언Image.register에서 사용하고자 하는 이미지를 Window.load_resources에서 읽습니다.드로잉은 Window.draw입니다.
    require 'dxopal'
    include DXOpal
    # 使いたい画像を宣言する
    Image.register(:enemy, "images/computer_typing_hayai.png")
    # ...
    
    # 画像の読み込みが終わったら、ブロック内が実行される
    Window.load_resources do
      Window.bgcolor = C_BLACK
    
      Window.loop do
        w = 80; h = 100
        2.times do |row|
          6.times do |col|
            x = 80 + col*w
            y = 20 + row*h
            Window.draw_box(x, y, x+w, y+h, C_GREEN)
          end
        end
    
        # 画像を表示する
        Window.draw(250, 10, Image[:enemy])
    # ...
    
    실행 결과.

    말할 수 없는 느낌이 든다.

    시험해 보다


    Undertale의 적 캐릭터가 하늘하늘 떠다니는 느낌(캐릭터에 따라) 때문에'타자가 빠른 사람'도 움직여보자.
    이동하려면 x, y 좌표를 변수로 바꾸어 값을 바꾸면 되지만, 다음 준비로 적의 역할을 나타내는 반을 만들어야 한다.기본적으로 이동하는 것은 반 전체가 가장 좋다.그렇게 하지 않으면 x·y 좌표를 나타내는 변수가 많아져서 몰라요.

    학급을 만들다


    DXOpal이 캐릭터를 나타내는 반을 만들 때 스프릿류를 부류로 활용하면 편리하다.Sprite 클래스의 사용 방법은 DXRuby 웹 사이트에 설명되어 있습니다.
  • Sprite 사용 자습서
  • 이번에는 적 역할이기 때문에 에니미라는 학급명을 써보려고 한다.우선 이전 코드와 같을 때까지 해야 한다.변경된 부분에 주석이 첨가되었다.
    # ...
    
    # 敵キャラのクラスを定義
    class Enemy < Sprite
      def initialize
        x = 250
        y = 10
        # 親クラスの初期化処理を呼ぶ。x座標、y座標、画像の3つが必要
        super(x, y, Image[:enemy])
      end
    end
    
    Window.load_resources do
      Window.bgcolor = C_BLACK
      # Enemyクラスのオブジェクトを作る
      enemy = Enemy.new
    
      Window.loop do
        w = 80; h = 100
        2.times do |row|
          6.times do |col|
            x = 80 + col*w
            y = 20 + row*h
            Window.draw_box(x, y, x+w, y+h, C_GREEN)
          end
        end
    
        # 敵を描画する
        # (座標はenemy自身が知っているので渡さなくてよい!)
        enemy.draw
    
        # ...
    
    적의 일부분을 그리는 코드는
        Window.draw(250, 10, Image[:enemy])
    
    부터 시작하다
        enemy.draw
    
    됐어.좌표와 그림은 엔미가 있기 때문에 주 순환 내에서 그것을 키로 만들지 않고 원활합니다.

    좌표 변경


    그리고 엔미의 x와 y가 바뀌면 적의 캐릭터를 이동할 수 있다.이를 위한 방법을 만들어보자.
    DXOpal에서는 캐릭터의 활동 방법update이 이름이고, 이후 캐릭터가 늘어날 때Sprite.update는 일괄적으로 사용할 수 있어 편리하다.
    따라서 Enemy 클래스에서 update 방법을 정의합니다.어쨌든 간단하게 x 좌표를 늘려주세요.Sprite의 하위 클래스에서는 self.x 에서 x 좌표에 접근할 수 있기 때문에 업데이트를 호출할 때마다 1개가 추가됩니다.
    class Enemy < Sprite
      # ...
    
      # 敵キャラを動かす処理
      def update
        self.x += 1
      end
    end
    
    # ...
    
        # 敵キャラを動かす処理を呼ぶ
        enemy.update
        enemy.draw
    
    이렇게 됐어.

    전근이 잘 되다


    이동하는 것은 괜찮지만 x 좌표가 너무 많이 증가하여 화면 밖으로 나타났다.이렇게 되면 아무것도 하지 않고 승리했다는 느낌을 줄 수 있으니 느껴보시길 바랍니다.
    여러가지 방법이 있는데 이번에 사용Math.cos하는 방법을 소개합니다.코드 여기 있습니다.
    class Enemy < Sprite
      def initialize
        x = 250
        y = 10
        super(x, y, Image[:enemy])
    
        # Math.cos用の変数を初期化
        @phase = 0
      end
    
      def update
        @phase += 0.01
        self.x = 250 + Math.cos(@phase) * 50
      end
    end
    
    우선 적당한 실례 변수@phase를 준비하여 0으로 초기화한다.조금씩 증가+= 0.01Math.cos(@phase)는 -1~+1의 범위 내에서 매끄럽게 변화한다.따라서 50배를 250으로 늘리면self.x 200~300의 범위 내에서 변화가 발생한다.
    실행 결과.

    0.01과 50의 부분을 적당히 만지면 서서히 빨라지거나 폭발 속도가 빨라진다.많이 시도해 보세요.

    총결산


    이번에는 이미지의 처리 방법과 스프릿 레벨을 소개했다.실제 운행하는 곳은 아래와 같다.
  • 데모
  • 전체 소스
  • 다음이 있으면 제 기계를 꺼내서 게임을 하고 싶어요.

    좋은 웹페이지 즐겨찾기