5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NimでSDL2 ① 準備とウィンドウ表示

Last updated at Posted at 2020-11-22

はじめに

NimでSDL2を使用する方法を書いていきます。
なるべく機能毎にシンプルにかければ良いなと思ってます。

NimでSDL2と言ったら以下が有名なので、こちらも参考にすると良いすね。
SDL2を使い、Nimで2Dのプラットフォーム・ゲームを書く

SDL2のインストール

SDL2を使うのでまずはSDL2をインストールする。
Macだとこんな感じ。(他のプラットフォームの方は適宜ググってくださいー)

# とりあえず色々突っ込んでおく
$ brew install sdl2{,_gfx,_image,_mixer,_net,_ttf}

NimのSDL2ライブラリのインストール

SDL2のラッパー。普通にnimbleでインストール

$ nimble install sdl2

リファレンス

困ったらここで調べればOK
SDL 2.0 日本語リファレンスマニュアル

とりあえずウィンドウを表示

# sdl2をimport、osはsleepを使うので
import sdl2, os

# メイン関数
proc main() =
  # SDL2初期化
  if not sdl2.init(0): # まずはサブシステムなし
    raise Exception.newException("[ERROR] init SDL2: " & $getError())
  # SDL2クリーンアップ処理(deferで関数終了時に実行)
  defer: sdl2.quit()
  # Window作成
  let window = createWindow(title = "SDL2 Window Sample", # Windowのタイトル
                            x = SDL_WINDOWPOS_CENTERED, # Windowの位置(真ん中)
                            y = SDL_WINDOWPOS_CENTERED, # Windowの位置(真ん中)
                            w = 640, # Windowの幅
                            h = 480, # Windowの高さ
                            flags = SDL_WINDOW_SHOWN) # Windowフラグ*1
  # Window作成エラーチェック
  if window.isNil:
    raise Exception.newException("[ERROR] createWindow: " & $getError())
  # Windowsクリーンアップ処理
  defer: window.destroy
  # 終了フラグ
  var done = false
  # メインループ
  while not done: # 終了フラグが立つまで実行
    # イベント格納変数
    var event = defaultEvent
    # 全てのイベントを処理
    while pollEvent(event):
      case event.kind:
      of QuitEvent: # 終了イベントの場合
        done = true # 終了フラグを立てる
      else:
        discard
    # CPUを使い切らないようにちょっと(0.1秒)待つ(とりあえず実装)
    sleep(100)

# メイン関数実行
main()

Windowフラグに関しては以下を参照
SDL_WindowFlags ウィンドウの状態の列挙体

実行結果

window.png

次は?

画像とか表示していきたいですね。

以上〜。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?