Flat Leon Works

アプリやゲームを作ってます。

Flat Leon Works

Flat Leon Works は shinya の個人サイトです。 制作物 iOS用音楽再生アプリ「うさプレイヤ」 iOS用2Dアクションゲーム「センメツコースター」 サイトマップ サイト概要など このサイトについて 近況 制作物 うさプレイヤ うさプレイヤの紹介 iOS有料アプリ…

【Unity】ソースコード編集->エディタプレイの手間を減らす(Mac)

MacでのUnityのプログラミング環境に不満があったのでちょっと改善してみました。 2018/08/19 追記 : Visual Studio Codeの場合のやり方を追加しました。 MacでのUnityプログラミング作業フローの不満点 改善後の作業フロー 方法 VisualStudio For Mac側の仕…

C#とC++の比較

C#を勉強中なのですが、C#はC++とかなり似ていながらも微妙な違いもあったりして、そこが結構ややこしいです。そこでC#とC++の違いをまとめてみました。 注意 C#はC#3.0(.Net Framework 3.5) を想定*1しています C++はC++14あたりを想定しています 「C#とC++…

【C++アイデア】ラムダ式で発生しがちな不正な参照(ダングリングポインタ)を回避する

C++

C++11から導入されたラムダ式はとても便利な機能ですが、その使われ方から不正な参照いわゆるダングリングポインタが発生しやすい機能でもあります。今回はその回避策を考えてみます。 なぜ不正な参照(ダングリングポインタ)が発生しやすいのか 不正な参照の…

【C++】C++関連ブックマーク

C++

C++関連でよく使うサイトや気になった記事をここにまとめておきます。 リファレンス cppreference.com : 有志で運営されているらしいC++のリファレンスサイト。情報が非常に充実している cpprefjp - C++日本語リファレンス : 日本語のC++リファレンスサイト…

【C++】弱参照クラスを自作する

C++

C++11から標準ライブラリにstd::weak_ptrが入りました。std::weak_ptrを使うことで弱参照を行えるようになるのですが、ちょっと使い勝手が悪いので弱参照クラスを自作してみました。 ちなみに、弱参照の良さについてはこちら↓で紹介しています。 【C++】弱参…

【C++】弱参照のすすめ

C++

弱参照というものをご存知でしょうか。弱参照はとても便利で個人的にも気に入っている仕組みなのですが、この便利さがあまり知られていないような気がします。そこで今回は弱参照の良さを紹介したいと思います。 (注意) この記事はC++を前提としています。他…

【C++】初期化子リスト関連機能を大雑把に理解する

C++

C++11から初期化子リストが導入されました。初期化子リストは簡単に見えて結構難しい機能です。そこで初期化子リストを大雑把に理解するための記事を書いてみることにしました。理解することを優先しているので言葉の定義などが不正確だったりするかもしれま…

【C++】C++14勉強メモ

C++

「C++11のお勉強」に続いて、C++14のお勉強です。 2進数リテラル 通常関数での戻り値型の型推論 decltype(auto) 後置き戻り値型でのauto ラムダ式の初期化キャプチャ ジェネリックラムダ 変数テンプレート constexprの制限緩和 deprecated属性 数値リテラル…

【C++】C++11以降の戻り値型の記述方法まとめ

C++

C++11になり、後置き戻り値型、auto型、ラムダ式が導入され、戻り値の記述方法が大幅に増えました。またC++14でさらに新しい記述方法が加わったのでとてもややこしいことになっています。そこで戻り値型の記述方法をまとめてみることにしました。(勉強中のた…

【C++】C++11勉強メモ

C++

ずっとC++03縛りを続けてきましたが、そろそろC++11に手を出してもいいだろうと思いC++11の勉強を始めてみました。C++11の情報はcpprefjpさんのページを参考にしています*1。 新機能/変更点 auto decltype 範囲for文 初期化子リスト 一様初期化 ムーブ(ムー…

MacとWindowsで共通のバッチファイル(シェルスクリプト)を利用できるようにする

Windowsにはダブルクリックでスクリプトを実行できるバッチファイルという便利な仕組みがあります。Macにはバッチファイルというものはありませんが、拡張子を.commandにしたシェルスクリプトを用意することでバッチファイルと同じようにダブルクリックでス…

【Mac】ブラウザ(HTML)上から任意のプログラムを起動する

通常、ブラウザ上から任意のプログラムを起動することはできないようになっています。これはおそらく安全性のためなので、ブラウザ上から任意のプログラムを起動することは不可能だと諦めていたのですが、最近ついにその方法を発見したので紹介したいと思い…

BlocksとGCD(Grand Central Dispatch)についてのメモ

iOS

久しぶりにiOSプログラミングをしてみたところ、GCDについてさっぱり忘れていたので、次からはすぐに思い出せるようにメモ。 Blocksとは Blocksメモ GCD(Grand Central Dispatch)とは Dispatch Queue Dispatch Queueの種類 Dispatch Queueの入手 逆引き リン…

【OpenGL】個人的逆引きリファレンス

個人的な覚書としての逆引きリファレンスです 今のところ OpenGL ES 2.0 のみを対象としています 思いついたら追加していきます 現在のフレームバッファ(カラーバッファ)のサイズを取得する iOSでデフォルトのフレームバッファをバインドする(GLKViewControl…

Macでビルドした実行ファイルが、libJPEGが原因で落ちる場合の対処法

久しぶりにMacでビルドしたプロジェクトが以下のようなエラー出力とともに実行時に落ちるようになっていました。 dyld: Symbol not found: __cg_jpeg_resync_to_restart Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO …

【Nim】マクロプログラミング用メモ

Nim

ドキュメント : macrosモジュール 定数 型の種類一覧 NimTypeKind = enum ntyNone, ntyBool, ntyChar, ntyEmpty, ntyAlias, ntyNil, ntyExpr, ntyStmt, ntyTypeDesc, ntyGenericInvocation, ntyGenericBody, ntyGenericInst, ntyGenericParam, ntyDistinct, …

【Nim】コンパイラソースコードリーディングのためのメモ

Nim

ファイル トークン種類(tk) ASTノード種類(nk) シンボル種類(sk) シンボルフラグ(sf) 内部型種類(ty) 内部型フラグ(tf) コンパイラマジック定数(m) ファイル compiler main.nim : コンパイラ起点 lexer.nim : レキサー parser.nim : パーサー ast.nim : AST …

10年前のMac mini(2007年製)にLinux(Ubuntu)をインストールする

新年明けて何か新しいことをしようと思い、前々からやりたかったMac miniのLinuxマシン化をやってみました。 今回、Linuxマシン化したのは2007年製のMac miniです。つまり10年前のパソコンということです。このMac miniは性能的にはまだまだ使えるはずなので…

【Nim】クラス定義マクロを作ってみる

Nim

Nimにはクラスという概念がありません。しかし、オブジェクト指向プログラミング自体はサポートされており、object型を使えばクラスとほぼ同じことが可能になっています。ただし、object型の定義が微妙に面倒なことに加え、やはりクラスが欲しいということで…

【Nim】seq型とstring型のリファレンスの罠

Nim

[執筆時のNimバージョン : 0.17.2] seq型とstring型のリファレンスの罠に引っかかったので、記事に残しておこうと思います。 罠を紹介するために事前知識として「seq型とstring型のデフォルト値」と「リファレンスのデフォルト値」について説明します。 まず…

【Nim】文字列操作

Nim

Nimでの文字列操作関連をまとめてみました。 Nimのバージョンは 0.17.2 を想定しています。( 執筆時の最新バージョン ) 文字列の基本 文字、文字列リテラル 文字、文字列型 文字列関連モジュール 標準モジュール(system,strutils)の文字列関連プロシージャ …

NimとC++を比較してみる

この記事は「Nim Advent Calendar 2017」の記事として登録させてもらっています。 NimはNimソースコードをC言語ソースへ変換するトランスコンパイラ言語です。これは普段C++を使っている人にとって非常に重要なことです。なぜなら、C++(C言語)が使える環境な…

【Nim】個人的逆引きリファレンス

Nim

Nimの勉強を兼ねて逆引きリファレンスとしてまとめてみようと思います。(随時更新) この記事は「Nim Advent Calendar 2017」の記事として登録させてもらっています。 注意: 使用しているNimのバージョンは0.17.2です Nimに詳しいわけではないので変な書き方…

【Nim】メモ

Nim

基本情報 作者 : Andreas Rumpfさん ( GitHubではAraqという名前 ) リンク 公式 公式サイト : Nim programming language | Nim Nimの特徴 : Features | Nim Nimインストール方法 : Install | Nim 言語マニュアル : Nim Manual BNF風文法定義 : Grammar 標準…

【Python】言語仕様メモ

ブール値変換 ブール値変換 偽になるもの None False 数値ゼロ : 0 空シーケンス : '', (), [] 空マッピング : {} __nonzero__()メソッドがFalseを返すオブジェクト __len__()メソッドが0を返すオブジェクト 真になるもの 偽に当てはまらないもの ドキュメン…

プログラミング言語を自作した話

数年前、「Flan」というプログラミング言語を作っていました。このプログラミング言語は長い間C++でプログラミングをしてきて感じた不満をもとに、自分好みの最高のプログラミング言語を作ろうと、そういう考えで作っていました。「Flan」は言語機能的にはだ…

2Dアクションゲーム「センメツコースター」の開発で使ったもの

先日「センメツコースター」の開発が完了しました。そこで開発に使ったものを紹介したいと思います。 制作ツール IDE : QtCreator テキストエディタ : Visual Studio Code ドット絵作成 : Aseprite スプライトアニメーション作成 : DarkFunctionEditor 絵素…

ゲームエンジンを使わずにC++とOpenGLでゲームを作った話

先日、iOS用ゲームアプリ「センメツコースター」をリリースしました。このゲームの開発にはゲームエンジンは使っておらず、C++とOpenGLとOpenALなどで実装されています。最近はゲームエンジンを使うことが当たり前になっており、ゲームエンジンを使わないゲ…

iOS用2Dアクションゲーム「センメツコースター」の紹介

長い間作っていたゲームがようやく完成しました。 センメツコースターはiOS用2Dアクションゲームです。広告無しの有料アプリ(240円)です。 レールの上をコースター(乗り物)で移動して敵を倒す(センメツ)するのが目的です。 こんな人におすすめです。 iPhone…