Lyの日常

主が楽しくプログラムをカキカキするブログ

TerminalからVSCodeを起動する設定するお、ω、

どうも僕でしゅ。ω。
最近VSCodeをよく使うので
Terminalから起動できるように設定をしたいと思います

ディレクトリを移動

ホームというのかな?
定位置に移動できるお、ω、

cd

ファイルを作成

touchでファイルを作成できるお、ω、

touch .bash_profile

ファイルを編集

vimでファイルを編集できるお

vim .bash_profile

f:id:akira206:20151102144259p:plain

.bash_profileを編集

vimを起動すると...
f:id:akira206:20151102144431p:plain
なんじゃこりゃー!
となりますが、慌てずにiを打ちます
下の部分がINSERTになれば編集が可能となります
f:id:akira206:20151102144644p:plain
あとは公式を参考にしてコードを書いていきます
Setting up Visual Studio Code

f:id:akira206:20151102145104p:plain
書き終わったらescキーを押します
下のINSERTが消えればおk
f:id:akira206:20151102145226p:plain
次にshift qを押します
f:id:akira206:20151102145352p:plain
この画面になったらwqと打ってEnter!
・wqで上書き保存して終了
・q!で破棄終了
f:id:akira206:20151102150032p:plain

実際に使ってみる

注意: 一度terminalを再起動すること

code <file>

f:id:akira206:20151102150322p:plain
キターーー(゜∀゜)ーーーー!!!!!

それでは、良いVSCodeライフを!

CinderをWinとMacで同時開発する際のプロジェクト設定、ω、

どうも僕です
Macを購入してWinを全く触らなかったのですが
MacとWinで同時開発しなければならなくなったので
その際つまづいたプロジェクト設定について書きます

前提として

MacではDesktopのCinderProjというディレクトリの中にcinderの本体を置いています
"Desktop/CinderProj/cinder_0.8.6_mac/"

WinではDesktopのCinderProjectというディレクトリの中にcinderの本体を置いています
"Desktop/CinderProject/cinder_0.8.6/"

Macでプロジェクト作成

普通にTinderBoxを使ってプロジェクトを作成するだけですね、ω、f:id:akira206:20151018231651p:plain
名前は適当にMacAndWinにしました
Win側では2013を使用するのでxcodeと2013を指定します

ここで必ず動作確認

適当に何かを描画してみる、ω、
f:id:akira206:20151018235957p:plain

適当なレポジトリに共有

gitでバージョン管理をするのでgitにpushしておきます
f:id:akira206:20151019001748p:plain

Winにcloneしてくる

#gitを使用しない場合はコピー
cinderの本体がある場所にもってきます
f:id:akira206:20151019004306p:plain

vc2013の.slnを起動

ソースファイルが開けないとエラーを吐かれる
f:id:akira206:20151019004510p:plain

プロパティを開く

エラーの原因はcinder library本体が見つからないためなので
このエラーをこれから解消していきます、ω、
まずはプロジェクト名の部分を右クリックし
プロパティを開きます
f:id:akira206:20151019004805p:plain

追加のインクルードディレクトリを変更

プロパティを開いたらC/C++から追加のインクルード((ryをみてください
f:id:akira206:20151019013635p:plain
みてわかる通りcinder_0.8.6_macと書いていますね
win環境下で動かすため、この状態では動かせません
以下のように書き換えます
f:id:akira206:20151019013928p:plain

同じようにリンカー、リソースも書き換えていきます

リンカーの書き換え

f:id:akira206:20151019014641p:plain

リソースの書き換え

f:id:akira206:20151019014646p:plain

プリプロセッサの定期の書き換え

この部分はDebug用、Release用をそれぞれ書き換えます
f:id:akira206:20151019014949p:plain
f:id:akira206:20151019014955p:plain

デバッグ情報の生成

これまでやってきた書き換えで
プログラムは実際に動きますが
デバッグするたびにこのポップアップがでてきます
f:id:akira206:20151019015143p:plain
警告のようなものなのでこれも解消しておきます
構成をDebugにして生成を"はい(/DEBUG)"にすれば完了です
f:id:akira206:20151019015236p:plain

最後に動作確認をして終了。ω。

OpenGL始めてみた、ω、

一年のころに講師の方からゲーム開発用に配布されたライブラリも
OpenGLを元にしてつくられていたようです

2年になって使い始めたCinderLibraryもOpenGLを使ってますし
OpenGLってライブラリの元として使われていることが多いようです

ということからOpenGLに興味を持ちまして
最近OpenGLを始めてみたわけですが

すごく・・・
原始的です////

今までだと

画面に点を描画するとき

drawPoint(Vec2f pos, Vec2f size);

こんな感じで点を描画する関数に必要なデータを渡すだけだったのが

OpenGLだと

// サイズ指定
glPointSize(int size);
// 何を描画するのかを指定
glBegin(GL_POINTS);
// 位置を指定
glVertex2i(int pos_x, int pos_y);
// 描画するものの効果範囲を終了
glEnd();

こんな感じで何をするのか細かく指定してあげないといけないようです
逆に細かく指定できる分いろいろと幅が広がるのかな?

まだウィンドウの描画点の描画までですが
gitにあげているのでよければどうぞ、ω、github.com

ポリゴンと線分の当たり判定!

みんなコード書いてるかな。ω。
3次元でゲームを作成しだしてから
いたるところの計算が難しくなって困ってる僕です

FPSを作り出して
人型のオブジェクトと弾との当たり判定でつまづいたので勉強してきました

解説するのはめんどくさいので割愛します
ごめんくさい

関数で求まること

・線分がポリゴンと交差しているかどうか(bool)
・交点(Vec3f)

github.com

やってることは
線分がポリゴンと交差しているか判定 (早期リターン
線分ABの点Aとポリゴン、点Bとポリゴンとの内分比を求める
内分比より交点を求める
交点がポリゴン内に存在しているか調べる

という流れになってます


英語勉強しないといけないから
外人さんのコード読んで真似して英語でコメント書いてます、ω、

FPSCamera 完成!

FPSのようにカメラをぐりぐり回したい!

ということで作ってみた、ω、

github.com

PC: Mac
Library: Cinder

VSのプロジェクト入れてるけど
Mac専用の関数つかってるから
多分うごかないかな^p^

ちゃんとWindowsでも動くように作るときは
プリプロセッサで制御してあげないとね

#if defined( CINDER_MAC )
  // MACの場合の処理
#else
  // Windowsの場合の処理
#endif
CINDER_MAC

ってのはCinder libraryの物だろうけど
ライブラリに用意されてなかったらどうすればいいんだろか
また今度ぐぐってみそ、ω、

マウスカーソルを非表示にしたり任意の位置に移動させたり、ω、

どうも、ω、

最近FPSにはまってまして
自分もFPS作ろうかなぁと思いまして
とりあえずFPSってマウスカーソルが非表示じゃないっすか
ってことでカーソルを非表示にする方法をご紹介

Windows

http://wisdom.sakura.ne.jp/system/winapi/win32/win44.html
こちらのサイトをご紹介
主が下手に紹介するよりましでしょう、ω、

Mac

はっきり言ってググってもなかなか見つからないです
探りながらようやく実行できました

#include <ApplicationServices/ApplicationServices.h>

ApplicationServicesはアップルから提供される
デベロッパ用のフレームワークをインクルード

CGDisplayHideCursor( CGDirectDisplayID display );

名前でわかる通りカーソルを非表示にするメソッドです
リファレンスが英語で引数のCGDirectDisplayIDというのはまだ謎ですが
とりあえず0を与えれば問題なく動きました、ω、

CGWarpMouseCursorPosition( CGPoint newCursorPosition );

引数に与えた位置にカーソルを移動させるメソッドです
CGPointというのは構造体で

struct CGPoint {
  CGFloat x;
  CGFloat y;
};

となっています
CGFloatはリファレンスには載っていませんが
コードを読むとdoubleでした

CGPoint pos;
pos.x = 0;
pos.y = 0;  // コンストラクタ用意しろよぉ、ω、
CGWarpMouseCursorPosition(pos);

これで動くかと思います

ただ座標系がモニターの左上が原点
となっているのでまだ使い勝手が悪い状態です
またなにかいい方法を模索中。ω。

Cinder Libraryって知ってる?

なんか学校でこのライブラリをつかぞーってことで
今年から使ってます

Cinderは
オープンソースのライブラリで
Processingを意識して作られてるらしい、ω、

Win,Macともに動きます

とりあえずプロジェクトを作るとこんな感じ

#include "cinder/app/AppNative.h"
#include "cinder/gl/gl.h"

using namespace ci;
using namespace ci::app;
using namespace std;

class CinderProjectApp : public AppNative {
public:
  void setup();
  void mouseDown(MouseEvent event);	
  void update();
  void draw();
};

void CinderProjectApp::setup() {}

void CinderProjectApp::mouseDown(MouseEvent event) {}

void CinderProjectApp::update() {}

void CinderProjectApp::draw() {
  // clear out the window with black
  gl::clear(Color( 0, 0, 0 )); 
}

CINDER_APP_NATIVE(CinderProjectApp, RendererGl)

テンプレートがここまですっきりしてるのはいいね、ω、
Cocos2dxを前に触ったことあるけど
あれは初心者向けじゃなかったなぁ

とりあえず立方体を描画

void CinderProjectApp::draw() {
  // clear out the window with black
  gl::clear(Color(0, 0, 0));
  gl::drawCube(Vec3f::zero(), Vec3f(50, 50, 50));
}

f:id:akira206:20150815174122p:plain

見てもらったら分かる通り
原点は左上になってます
右に向かってx座標が伸びていて
下に向かってy座標が伸びています

カメラライト使うと
こんな表現もできます。ω。
f:id:akira206:20150815175952p:plain

リファレンスが英語のみで
付属してくるサンプルが難しすぎて
ネットで調べてもさっぱりなCinderですが

主はけっこう好きです
ではこのへんで(・。・)))3ミ