アニメ!アニメ!

2015年12月21日月曜日

CodinGame - Programming is fun

CodinGame - Programming is fun
https://www.codingame.com/ide/1651951d10cc2dcd8cef06c5dcbe7ef44596c1d
Cocos2d-x: オープンソースゲーム開発プラットフォーム
http://jp.cocos.com/
クレジットカード決済-PayPal(ペイパル)
https://www.paypal.com/jp/webapps/mpp/home
新規登録 - プログラミングならドットインストール
https://dotinstall.com/signup?redirect=%2Flessons%2Fbasic_rails
電気の資格を取ろう!トップページ
http://www.eonet.ne.jp/~imagawa/denki_kiso/index.html
米国内で最も年間給与が高い「プログラミング言語 」トップ12 - Media-Pickup
http://media-pickup.com/society/20141123/most-highest-paying-programming-languages/
FX Winning EA System |FX取引は MT4のEAでシステムトレード
http://fx.weas.net/
結局どのプログラミング言語を学べばいいの・・・?
http://gadgetlife2ch.blomaga.jp/articles/40346.html
経験ゼロからプログラミングを習得!自分に合わせて選べる4つの学習法 - paiza開発日誌
http://paiza.hatenablog.com/entry/2015/06/02/%E7%B5%8C%E9%A8%93%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%92%E7%BF%92%E5%BE%97%EF%BC%81%E8%87%AA%E5%88%86%E3%81%AB%E5%90%88%E3%82%8F
ゲームで遊ぶだけ!気付いたらプログラミングできるようになれるサービス14 - paiza開発日誌
http://paiza.hatenablog.com/entry/2015/12/16/%E3%82%B2%E3%83%BC%E3%83%A0%E3%81%A7%E9%81%8A%E3%81%B6%E3%81%A0%E3%81%91%EF%BC%81%E6%B0%97%E4%BB%98%E3%81%84%E3%81%9F%E3%82%89%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7
夢を描いて、動かそう。アニメーション作成ツール OPTPiX SpriteStudio | ウェブテクノロジ
http://www.webtech.co.jp/spritestudio/
Flashゲームプログラミング講座 For ActionScript3.0
http://hakuhin.jp/as3.html
Learn C++ 11 in 20 Minutes - Part I - YouTube
https://www.youtube.com/watch?v=U6mgsPqV32A&list=PL5jc9xFGsL8FWtnZBeTqZBbniyw0uHyaH
MIT App Inventor | Explore MIT App Inventor
http://appinventor.mit.edu/explore/index-2.html
プログラムからEXEファイルを生成してみよう (2/3):CodeZine(コードジン)
http://codezine.jp/article/detail/419?p=2
気軽に始められるAndroidアプリ開発の魅力とは? 「ほんきで学ぶ」入門書の著者・寺園氏に訊く
http://codezine.jp/article/detail/8804#
Webアプリを公開しよう! Chrome Web Store/Apps入門
http://gihyo.jp/dev/serial/01/chrome-web-store/0009
AdventCalendar - 全国のNEET達に送る、プログラミングの始め方。 - Qiita
http://qiita.com/nyarla/items/35966109fd10a50c5e0e
C++の基礎 : const 修飾子
http://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/const.html
SophiaFramework UNIVERSE BREW C++ チュートリアル
http://www.s-cradle.com/developer/sophiaframework/sf_tutorial.html
Webアプリを公開しよう! Chrome Web Store/Apps入門:連載|gihyo.jp … 技術評論社
Download Android Studio and SDK Tools | Android Developers
http://developer.android.com/sdk/installing/index.html?pkg=studio
Androidの概要と開発環境の構築
~速習! Androidアプリケーション開発(1)~
http://codezine.jp/article/detail/4588?p=2
PHP - WEBサービスで起業したい人に読んで欲しい18のコト - Qiita
http://qiita.com/kazukichi/items/aeba286c2a750081e5c0
ウェブカツ!! - WEBプログラミングオンライン動画総合学習サービス! -
http://webukatu.com/home
米国内で最も年間給与が高い「プログラミング言語 」トップ12 - Media-Pickup
http://media-pickup.com/society/20141123/most-highest-paying-programming-languages/
インディーゲーム開発者向け無料ライセンス「OPTPiX SpriteStudio for Indie」 | ウェブテクノロジ
http://www.webtech.co.jp/spritestudio/indie/index.html
MIT App Inventor | Explore MIT App Inventor
http://ai2.appinventor.mit.edu/#5313918342791168
エロ・ライトノベル - うぱ日記
http://d.hatena.ne.jp/iris6462/20060826/1156597948
EZ-NET: C++11 では NULL ではなく nullptr を使う - C++ プログラミング
http://program.station.ez-net.jp/special/handbook/cpp/syntax/nullptr.asp
マイページ | CODEPREP -オンラインでプログラミングを学ぼう-
https://codeprep.jp/ja/mypage
C++の基礎 : 演算子
http://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/operator.html
ざっくりFuelPHPの使い方
http://qiita.com/kazukichi/items/2a6e242091c5f485b976
プログラミングの勉強に役立つ優良ブログ8選 | Code部
http://blog.codecamp.jp/blog_for_studying_programming/
NxWorld
http://www.nxworld.net/
Fallout4 情報局 | フォールアウト4 の情報・MOD紹介 : Fallout4 MOD製作関連ツール
http://fallout4.blog.jp/archives/47535461.html#more
Internet Archive が「歴史的ソフトウェアコレクション」を公開、ブラウザ内エミュレータで直接起動
http://japanese.engadget.com/2013/10/28/internet-archive/
SVGを制作できるアプリ,お絵描きソフトを徹底的に調べました! 114個 - 聴く耳を持たない(片方しか)
http://d.hatena.ne.jp/rikuo/20140528
64bit版Windows7でPS3コントローラを認識させる - ゲームプログラミングを頑張る日記
http://d.hatena.ne.jp/poru2/20110506/1304666169
人は一ヶ月でエンジニアになれるのか - 詳細解説
http://www.slideshare.net/livesense/ss-46078743?ref=http://techacademy.jp/magazine/6342
ロベールのC++教室
http://www7b.biglobe.ne.jp/~robe/cpphtml/
C言語講座>サイトマップ
http://www1.cts.ne.jp/~clab/Sitemap.html
GameCradle ゲームのゆりかご
http://www.gamecradle.net/
TechAcademyマガジン | 教育×テクノロジーのオンライン専門情報誌
http://techacademy.jp/magazine/
3点の座標から簡単に角度と回転方向を求める.(2・3・N次元,外積を用いる方法)
http://www5d.biglobe.ne.jp/~noocyte/Programming/Geometry/RotationDirection.html
ぴぽや倉庫
http://piposozai.wiki.fc2.com/
βtools(ベータツールズ)
http://neutralx0.net/tool/
ゲームプログラミングの館
http://dixq.net/g/
WOLF RPGエディター公式サイト 【RPG作成フリーソフト】
http://www.silversecond.com/WolfRPGEditor/
Pixivのうごイラを保存するブックマークレット
http://rndomhack.com/2014/06/25/pixiv-ugoira/
Illustrator初心者が最初にマスターしたい機能10選 | 株式会社LIG
http://liginc.co.jp/web/design/illustrator/81319
Ruby on Rails入門に最適のチュートリアルサイト7選 | TechAcademyマガジン
http://techacademy.jp/magazine/5910
CodinGame - Programming is fun
https://www.codingame.com/

2015年11月7日土曜日

VisualStudioで「SAFESEH イメージを生成できません」のエラーを解消する

1.プロジェクトを右クリックし「プロパティ」をクリックします。
2.プロパティ内の「構成プロパティ」→「リンカー」→「詳細設定」を開き、画面下までスクロールしたところにある「安全な例外ハンドラーを含むイメージ」の値を「いいえ(/SAFESEH:NO)」にします。
http://shinsuke789.hatenablog.jp/entry/2014/09/30/122312

2015年11月4日水曜日

[C言語]メイン関数の書き方

#include "DxLib.h"

int GetHitKeyStateAll_2(int KeyStateBuf[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll(GetHitKeyStateAll_Key);
for (int i = 0; i < 256; i++){
GetHitKeyStateAll(GetHitKeyStateAll_Key);
for (int i = 0; i < 256; i++){
if (GetHitKeyStateAll_Key[i] == 1) KeyStateBuf[i]++;
else KeyStateBuf[i] = 0;
}
return 0;
}

void char_disp(int White, int y){
DrawString(150, y, "■" White);
DrawString(170, 100, "NEW GAME", White);
DrawString(170, 120, "CONTINUE1", White);
DrawString(170, 140, "CONTINUE2", White);
DrawString(170, 160, "CONTINUE3", White);
DrawString(170, 160, "CONTINUE3", White);
DrawString(170, 200, "CONTINUE5", White);
DrawString(170, 220, "CONTINUE6", White);
DrawString(170, 240, "LOG OUT", White);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
int Key[256];
int while, y = 100;
ChangeWindowMode(TRUE);//ウィンドウモード
if (DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0) return -1;//初期化と裏画面化
while (ProcessMessage() == 0 && ClearDrawScreen() == 0 && GetHitKeyStateAll_2(Key) == 0 && Key[KEY_INPUT_ESCAPE] == 0){

char_disp(while, y);

if (Key[KEY_INPUT_DOWN] == 1 || (Key[KEY_INPUT_DOWN] % 5 == 0 && Key[KEY_INPUT_DOWN]>30)){
// たった今押したか、30カウンター以上押しっぱなしかつ5回に一度
y += 20;
if (y == 260)                            // y座標が260なら(選択が一番下なら)
y = 100;                        // 選択座標を一番上に
}

ScreenFlip();//裏画面反映
}

DxLib_End();
return 0;
}

2015年10月26日月曜日

C言語 sprintf

#include <stdio.h>
#include <string.h>
#include <cstring> //C++言語

int main()
{
//2015年10月26日と表示したい
printf("%d年%d月%d日\n", 2015, 10, 26);

//2015年12月3日と表示したい
printf("%d年%d月%d日\n", 2015, 12, 3);

//8桁指定で2015を表示する
// ただし、桁が足りない場合は0で埋めること
printf("%08d\n", 2015);


//1を左揃えで表示したい
printf("%-08d\n", 2015);

// sprintf  (string
char text[256];
sprintf_s(text, "%08d\n", 2015);

//sprintf_sでバッフォーオーバーランを防ぐ


"c:/dah/dk.ahg/dafs/ab...c.txt"

printf(text);
return 0;
}
// %d decuval 10進数
// %O octal 8進数

// %s string 文字列
// %x hexa decival 16進数
// %f float 浮動小数点数
// %c charcter 文字列
// \t tab タブ
// \a alert 警告音
// \b backspace バックスペース
// \r rewind 復帰
// \f feed 改ページ
// \\ \を文字として表示する
// \n 改行 new line 改行
// \0 null terminater null文字

// フィールド幅指定
// ゼロフィールド指定
//printf関数
//第一引数 書式付き文字列

2015年10月22日木曜日

「サーバーからの情報の取得中にエラーが発生しました。 RPC:S-7:AEC-0」

「サーバーからの情報の取得中にエラーが発生しました。 RPC:S-7:AEC-0」??

http://www.sumaho-etc.net/?p=227

2015年10月16日金曜日

[C#]文字列の数値への変換

using System;

class triangle
{
    public static void Main()
    {
        double 底辺, 高さ, 面積;
        string teihen, takasa;
        while (true)
        {
            Console.Write("高さ=");
            takasa = Console.ReadLine();
            高さ = double.Parse(takasa);
            if (高さ == 0.0)
                break;
            Console.Write("底辺 = ");
            teihen = Console.ReadLine();
            底辺 = double.Parse(teihen);
            面積 = 底辺 * 高さ / 2.0;
            Console.WriteLine("高さ{0}、底辺{1}の三角形の面積{2}です。",
                高さ, 底辺, 面積);
        }
    }
}

[C#]ReadLineメソッド

using System;

class Console03
{
    public static int Main()
    {
        Console.Write("あなたの名前は ");
        string YourName = Console.ReadLine();
        Console.Write("あなたの年齢は ");
        string YourAge = Console.ReadLine();
        Console.WriteLine("あなたの名前は{0}で年齢は{1}歳です",
            YourName, YourAge);

        return 0;
    }
}

[C#]WriteLineメソッドとインデックス

using System;

class console02
{
    public static int Main()
    {
        string cat = "猫" , dog = "犬";

            Console.WriteLine("{0}はあほですが、{1}は賢いです",cat,dog);
        return 0;
    }
}

http://www.kumei.ne.jp/c_lang/cs/cs_02.htm


C#プログラミングTips:文字列処理に関するヒント
http://www.atmarkit.co.jp/fdotnet/csharptips/010string/010string.html

[C#]Helloworld

using System;

class console01
{
    public static int Main()
    {
        Console.WriteLine("Helloworld!");

        return 0;
    }
}

2015年10月10日土曜日

[Windowプログラミング]文字を表示する

#include <Windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE, int)
{
char szClassName[] = "text01";

int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
LPSTR lpsCmdLine, int nCmdShow);
{
MSG msg;
BOOL bRet;

if (!InitApp(hCurInst))
return FALSE;
if (!InitInstance, nCmdShow)
return FALSE;
while (bRet = GetMessage(&msg, NULL, 0, 0)) != 0){
{
if (bRet == -1){
break;
}
}
else{
TranslateMessage(&mag);
DispatchMessage(&msg);
}
}
return (int)msg.wParam;
}

ATOM InitApp(HINSTANCE hInst)
{
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;

wc.hInstance = hInst;
wc.hIcon = (HICON)LoadImage(NULL,
MAKEINTRESOURCE(IDI_APPLICATION),
IMAGE_ICON, 0, 0,
LR_DEFAULTSIZE | LR_SHARED);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL; wc.lpszClassName = NULL;
wc.lpszClassName = (LPCSTR)szClassName;
wc.hIconSm = (HICON)LoadImage(NULL,
MAKEINTRESOURCE(IDI_APPLICATION),
IMAGE_ICON, 0, 0,
LR_DEFAULTSIZE | LR_SHARED);

return (RegisterClassEx)hInst, nCmdShow);
}
{
HWND nWnd;

hWnd = CreateWindow(szClassName,
"猫でもわかるテキスト表示",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInst,
NULL);
if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
int id, u = 0, i;
PAINTSTRUCT ps;
HDC hdc;
char * lpszStr = "猫でもわかるゲームプログラミング";

switch (msg)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
for (i = 0; i < 20; i++){
TextOut(hdc, 0, y + 20 * i,
lpszStr, (int)strlen(lpszStr));
}
EndPaint(hWnd, &ps);
break;
case WM_CLOSE:
id = MassageBox(nWnd, "終了してもよろしいですか",
"終了確認", MB_YESNO);
if (id == IDYES)
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, msg, wp, lp));
}
return 0;
}

2015年10月6日火曜日

[C言語]Windowsプログラミング

#include <windows.h>
#pragma comment (lib, "winmm.lib")
#define _CRT_SECURE_NO_WARNINGS
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);

char szClassName[] = "template"; //ウィンドウクラス


int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow)
{
MSG msg;
BOOL bRet;

if (!InitApp(hCurInst))
return FALSE;
if (!InitInstance(hCurInst, nCmdShow))
return FALSE;
while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0){
if (bRet == -1){
break;
}
else {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int)msg.wParam;
}

//ウィンドウクラスの登録

ATOM InitApp(HINSTANCE hInst)
{
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc; //プロシャージ名
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst; //インスタンス
wc.hIcon = (HICON)LoadImage(NULL,
MAKEINTRESOURCE(IDI_APPLICATION),
IMAGE_CURSOR,
0,
0,
LR_DEFAULTSIZE | LR_SHARED);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszClassName = NULL;
wc.lpszClassName = (LPCWSTR)szClassName;
wc.hIconSm = (HICON)LoadImage(NULL,
MAKEINTRESOURCE(IDI_APPLICATION),
IMAGE_ICON,
0,
0,
LR_DEFAULTSIZE | LR_SHARED);

return (RegisterClassEx(&wc));
}

BOOL InitInstance(HINSTANCE hInst, int nCmdShow)
{
HWND hWnd;

hWnd = CreateWindowA(szClassName,
"猫でも分かるWindowsプログラミング",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,

hInst,
NULL);
if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}

LRESULT CALLBACK WndProc(
HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
int id;

switch (msg)
{
case WM_CLOSE:
id = MessageBoxA(hWnd,
"終了しまてもよろしいですか",
"確認",
MB_YESNO | MB_ICONQUESTION);
if (id == IDYES)
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, msg, wp, lp));
}
return 0;
}


エラー 1 error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。 c:\Users\tyosuke\documents\visual studio 2013\Projects\ConsoleApplication106\ConsoleApplication106\MSVCRTD.lib(crtexe.obj) ConsoleApplication106

Visual Studioアプリケーションの種類を変更する方法
http://blogs.osdn.jp/programming/2015/02/24/subsystem.html

2015年9月30日水曜日

DirectX 脱出ゲーム(仮)

#include <windows.h>
#include <d3d9.h>    // DirectXGraphicsコアライブラリ
#include <d3dx9.h>   // DirectXGraphics拡張ライブラリ

#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")

// Direct3Dデバイス
IDirect3DDevice9* d3dDevice;

// Direct3Dテクスチャ
IDirect3DTexture9* myTexture;

// Direct3Dテクスチャ
IDirect3DTexture9* dogTexture;

// Direct3Dテクスチャ
IDirect3DTexture9* mikuTexture;

// Direct3Dテクスチャ
IDirect3DTexture9* kyukyuTexture;
//アニメーション用のインデックス
int animIndex = 0;

//アニメーション用ウェイトカウンター
int animWaitCounter = 0;


LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

// テクスチャを読み込む関数
IDirect3DTexture9* LoadTexture(const char* path)
{
IDirect3DTexture9* texture = nullptr;

HRESULT hr;
hr = D3DXCreateTextureFromFileEx(
d3dDevice, // Direct3Dデバイス
path, // 画像のパス (ファイル名)
0, // 読み込む際の横幅 (単位はピクセル)
0, // 読み込む際の高さ (単位はピクセル)
1, // ミップレベル
0, // 使用方法
D3DFMT_UNKNOWN, // ピクセルフォーマット
D3DPOOL_DEFAULT, // どのメモリ上に読み込むか?
D3DX_FILTER_NONE, // 拡大縮小フィルター
D3DX_FILTER_NONE, // ミップフィルター
D3DCOLOR_ARGB(0, 0, 0, 0), // 透過色
nullptr, // 画像情報を受け取る変数のアドレス
nullptr, // カラーパレットを受け取るバッファ
&texture // テクスチャを受け取る変数のアドレス
);

if(hr < 0)
{
MessageBox(nullptr, "画像の読み込みに失敗しました", "エラー", MB_OK);
}

return texture;
}


// DirectXGraphicsを初期化する関数
void InitializeGraphics(HWND hWnd, int resolutionWidth, int resolutionHeight)
{
// Direct3Dオブジェクトの作成
IDirect3D9* d3d9;
d3d9 = Direct3DCreate9(D3D_SDK_VERSION);

if (d3d9 == nullptr)
{
// DirectXが使えない
MessageBox(nullptr, "DirectXが使用できません", "エラー", MB_OK);
}

// プレゼンテーションパラメーターを用意する
D3DPRESENT_PARAMETERS d3dpp;
d3dpp.BackBufferWidth = resolutionWidth; // 裏画面の横幅
d3dpp.BackBufferHeight = resolutionHeight; // 裏画面の高さ
d3dpp.BackBufferCount = 1; // 裏画面の枚数
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; // 裏画面のピクセルフォーマット
d3dpp.hDeviceWindow = hWnd;
d3dpp.Windowed = TRUE; // TRUE:ウィンドウモード  FALSE:フルスクリーンモード
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp.MultiSampleQuality = 0;
d3dpp.FullScreen_RefreshRateInHz = 0;
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_ONE;
d3dpp.Flags = 0;

// Direct3Dデバイスの作成
if (FAILED(d3d9->CreateDevice(0, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &d3dDevice)))
{
// 上記の条件では初期化できない
MessageBox(nullptr, "Direct3Dの初期化に失敗しました", "エラー", MB_OK);
}

// 1枚目の画像読み込み
myTexture = LoadTexture("0142.jpg");

// 2枚目の画像読み込み
dogTexture = LoadTexture("k9img13_golden.jpg");

// 3枚目の画像読み込み
mikuTexture = LoadTexture("miku-tiled.png");

// 4枚目の画像読み込み
kyukyuTexture = LoadTexture("kyukyu.png");
}

// ゲーム内の時間を進める為の処理を行う関数
void UpdateGameFrame()
{
animWaitCounter++;
if (animWaitCounter < 6)
{
//ウェイトカウンター
animWaitCounter = 0;

//次のコマへ進む
animIndex++;

//最後のコマを過ぎたら最初のコマに戻す
if (animIndex >= 4)
animIndex = 0;
}
}

//レッスン1: 2D画面上に三角形を1つ描画する
void Lesson1()
{
// 1つの頂点にはどんな情報を持たせる?
// ・位置(x,y,z)          2D/3D共に必須
// ・wの逆数(rhw)         2Dには必須
// ・法線(nx,ny,nz)       オプション
// ・色(diffuse)          オプション
// ・テクスチャ座標(u,v)  オプション
struct VERTEX
{
float x, y, z;
float rhw;
};

// 頂点は「変数」ではなく「配列」で用意すること
// DirectX側の条件:頂点がメモリ上で連続している
// C言語では「配列」はメモリ上で連続していることが保証される
VERTEX vert[3];

vert[0].x = 0.0f; // ゲーム画面の左上を原点(0,0)とした時のX座標
vert[0].y = 0.0f; // ゲーム画面の左上を原点(0,0)とした時のY座標
vert[0].z = 0.0f; // zは奥行きを表す値
vert[0].rhw = 1.0f; // rhwはいつも0にしておくこと

vert[1].x = 1280.0f;
vert[1].y = 0.0f;
vert[1].z = 0.0f;
vert[1].rhw = 1.0f;

vert[2].x = 0.0f;
vert[2].y = 720.0f;
vert[2].z = 0.0f;
vert[2].rhw = 1.0f;

// 頂点1個分にはどんな情報が含まれているのかを
// Direct3Dデバイスに教える
d3dDevice->SetFVF(D3DFVF_XYZRHW);

// Direct3Dデバイスに頂点データを渡して描画してもらう
d3dDevice->DrawPrimitiveUP(
D3DPT_TRIANGLELIST, // プリミティブタイプ
1, // プリミティブ数
vert, // 頂点データ
sizeof(VERTEX) // 頂点1個分のサイズ(バイト数)
);
}


//レッスン2: 2D画面上に三角形を2つ描画する
void Lesson2()
{
struct VERTEX
{
float x, y, z;
float rhw;
};

VERTEX vert[6];

// 1つ目の三角形
vert[0].x = 200.0f;
vert[0].y = 100.0f;
vert[0].z = 0.0f;
vert[0].rhw = 1.0f;

vert[1].x = 800.0f;
vert[1].y = 100.0f;
vert[1].z = 0.0f;
vert[1].rhw = 1.0f;

vert[2].x = 200.0f;
vert[2].y = 500.0f;
vert[2].z = 0.0f;
vert[2].rhw = 1.0f;

// 2つ目の三角形
vert[3].x = 200.0f;
vert[3].y = 500.0f;
vert[3].z = 0.0f;
vert[3].rhw = 1.0f;

vert[4].x = 800.0f;
vert[4].y = 100.0f;
vert[4].z = 0.0f;
vert[4].rhw = 1.0f;

vert[5].x = 800.0f;
vert[5].y = 500.0f;
vert[5].z = 0.0f;
vert[5].rhw = 1.0f;

d3dDevice->SetFVF(D3DFVF_XYZRHW);

d3dDevice->DrawPrimitiveUP(
D3DPT_TRIANGLELIST,
2,
vert,
sizeof(VERTEX)
);
}


//レッスン3: 三角形に色を付ける
void Lesson3()
{
// 1つの頂点にはどんな情報を持たせる?
// ・位置(x,y,z)          2D/3D共に必須
// ・wの逆数(rhw)         2Dには必須
// ・法線(nx,ny,nz)       オプション
// ・色(diffuse)          オプション
// ・テクスチャ座標(u,v)  オプション
struct VERTEX
{
float x, y, z;
float rhw;
D3DCOLOR diffuse;
};

// 頂点は「変数」ではなく「配列」で用意すること
// DirectX側の条件:頂点がメモリ上で連続している
// C言語では「配列」はメモリ上で連続していることが保証される
VERTEX vert[3];

vert[0].x = 0.0f; // ゲーム画面の左上を原点(0,0)とした時のX座標
vert[0].y = 0.0f; // ゲーム画面の左上を原点(0,0)とした時のY座標
vert[0].z = 0.0f; // zは奥行きを表す値
vert[0].rhw = 1.0f; // rhwはいつも0にしておくこと
vert[0].diffuse = D3DCOLOR_ARGB(255, 255,  0,  0); // 0~255
// vert[0].diffuse = D3DCOLOR_ARGB(α値, 赤, 緑, 青); // 0~255

vert[1].x = 1280.0f;
vert[1].y = 0.0f;
vert[1].z = 0.0f;
vert[1].rhw = 1.0f;
vert[1].diffuse = D3DCOLOR_ARGB(255, 0, 255, 0);

vert[2].x = 0.0f;
vert[2].y = 720.0f;
vert[2].z = 0.0f;
vert[2].rhw = 1.0f;
vert[2].diffuse = D3DCOLOR_ARGB(255, 0, 0, 255);

// 頂点1個分にはどんな情報が含まれているのかを
// Direct3Dデバイスに教える
d3dDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);

// Direct3Dデバイスに頂点データを渡して描画してもらう
d3dDevice->DrawPrimitiveUP(
D3DPT_TRIANGLELIST, // プリミティブタイプ
1, // プリミティブ数
vert, // 頂点データ
sizeof(VERTEX) // 頂点1個分のサイズ(バイト数)
);
}


//レッスン4: 四角形にテクスチャを貼る
void Lesson4()
{
struct VERTEX
{
float x, y, z;
float rhw;
float u, v;    // テクスチャ座標(u,v)
};

VERTEX vert[6];

// 1つ目の三角形
vert[0].x = 200.0f;
vert[0].y = 100.0f;
vert[0].z = 0.0f;
vert[0].rhw = 1.0f;
vert[0].u = 0.0f;
vert[0].v = 0.0f;

vert[1].x = 800.0f;
vert[1].y = 100.0f;
vert[1].z = 0.0f;
vert[1].rhw = 1.0f;
vert[1].u = 1.0f;
vert[1].v = 0.0f;

vert[2].x = 200.0f;
vert[2].y = 500.0f;
vert[2].z = 0.0f;
vert[2].rhw = 1.0f;
vert[2].u = 0.0f;
vert[2].v = 1.0f;

// 2つ目の三角形
vert[3].x = 200.0f;
vert[3].y = 500.0f;
vert[3].z = 0.0f;
vert[3].rhw = 1.0f;
vert[3].u = 0.0f;
vert[3].v = 1.0f;

vert[4].x = 800.0f;
vert[4].y = 100.0f;
vert[4].z = 0.0f;
vert[4].rhw = 1.0f;
vert[4].u = 1.0f;
vert[4].v = 0.0f;

vert[5].x = 800.0f;
vert[5].y = 500.0f;
vert[5].z = 0.0f;
vert[5].rhw = 1.0f;
vert[5].u = 1.0f;
vert[5].v = 1.0f;

d3dDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_TEX1);

// どのテクスチャを貼りたいのかをDirect3Dデバイスに教える
d3dDevice->SetTexture(0, dogTexture);

d3dDevice->DrawPrimitiveUP(
D3DPT_TRIANGLELIST,
2,
vert,
sizeof(VERTEX)
);
}


//DrowSprite関数: スプライトを画面に描画する関数
void DrowSprite(float dx, float dy, float dw, float dh, IDirect3DTexture9* texture, float sx, float sy, float sw, float sh, D3DCOLOR color)
{
D3DSURFACE_DESC desc;
texture->GetLevelDesc(0, &desc);

struct VERTEX
{
float x, y, z;
float rhw;
D3DCOLOR diffuse; //頂点カラー
float u, v;    // テクスチャ座標(u,v)
};

VERTEX vert[6];

//サンプリングの関係で0.5ずつずらす
dx += 0.5f;
dy += 0.5f;


// 1つ目の三角形
vert[0].x = dx;
vert[0].y = dy;
vert[0].z = 0.0f;
vert[0].rhw = 1.0f;
vert[0].diffuse = color;
vert[0].u = sx / desc.Width;
vert[0].v = sy / desc.Height;

vert[1].x = dx + dw;  // 右上X座標 = 左上X座標 + 四角形の横幅
vert[1].y = dy;
vert[1].z = 0.0f;
vert[1].rhw = 1.0f;
vert[1].diffuse = color;
vert[1].u = (sx + sw) / desc.Width;
vert[1].v = sy / desc.Height;

vert[2].x = dx;
vert[2].y = dy + dh;
vert[2].z = 0.0f;
vert[2].rhw = 1.0f;
vert[2].diffuse = color;
vert[2].u = sx / desc.Width;
vert[2].v = (sy + sh) / desc.Height;

// 2つ目の三角形
vert[3].x = dx;
vert[3].y = dy + dh;
vert[3].z = 0.0f;
vert[3].rhw = 1.0f;
vert[3].diffuse = color;
vert[3].u = sx / desc.Width;
vert[3].v = (sy + sh) / desc.Height;

vert[4].x = dx + dw;
vert[4].y = dy;
vert[4].z = 0.0f;
vert[4].rhw = 1.0f;
vert[4].diffuse = color;
vert[4].u = (sx + sw) / desc.Width;
vert[4].v = sy / desc.Height;

vert[5].x = dx + dw;
vert[5].y = dy + dh;
vert[5].z = 0.0f;
vert[5].rhw = 1.0f;
vert[5].diffuse = color;
vert[5].u = (sx + sw) / desc.Width;
vert[5].v = (sy + sh) / desc.Height;

d3dDevice->SetFVF(D3DFVF_XYZRHW |D3DFVF_DIFFUSE| D3DFVF_TEX1);

// どのテクスチャを貼りたいのかをDirect3Dデバイスに教える
d3dDevice->SetTexture(0, texture);

d3dDevice->DrawPrimitiveUP(
D3DPT_TRIANGLELIST,
2,
vert,
sizeof(VERTEX)
);
}





// ゲーム画面の描画を行う関数
// (この関数は1秒間に約60回呼び出される)
void DrawGame()
{
// 裏画面を塗りつぶす (1フレーム前の画面を消す)
d3dDevice->Clear(0, nullptr, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255, 100, 149, 237), 1.0f, 0);

// レンダリング開始
d3dDevice->BeginScene();

////////////////////////////////////////////
// ここで全てのポリゴンを描画する
////////////////////////////////////////////

// Lesson5(左上隅X座標, 左上隅Y座標, 横幅, 高さ, テクスチャ);
//Lesson5(50, 80, 300, 200, myTexture);
//Lesson5(200, 400, 200, 500, dogTexture);

DrowSprite(100, 50, 200 , 200, mikuTexture, 200 * animIndex, 0, 200, 200, D3DCOLOR_ARGB( 255, 255, 255, 255));

// レンダリング終了
d3dDevice->EndScene();

// 裏画面の内容を表画面にコピーする
d3dDevice->Present(nullptr, nullptr, nullptr, nullptr);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,
LPSTR lpszCmdLine, int nCmdShow)
{
WNDCLASS myProg;
myProg.style = CS_HREDRAW | CS_VREDRAW;
myProg.lpfnWndProc = WndProc;
myProg.cbClsExtra = 0;
myProg.cbWndExtra = 0;
myProg.hInstance = hInstance;
myProg.hIcon = NULL;
myProg.hCursor = LoadCursor(NULL, IDC_ARROW);
myProg.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
myProg.lpszMenuName = NULL;
myProg.lpszClassName = "GameProgram1";

if (!RegisterClass(&myProg))
return -1;

// クライアント領域のサイズが800x600になるように
// ウィンドウのサイズを計算する
RECT rect;
rect.left = 0;
rect.top = 0;
rect.right = 1280;
rect.bottom = 720;
AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, FALSE);

// ウィンドウの横幅
int windowWidth = rect.right - rect.left;

// ウィンドウの高さ
int windowHeight = rect.bottom - rect.top;

// スクリーンのサイズを調べる
int screenWidth = GetSystemMetrics(SM_CXSCREEN);
int screenHeight = GetSystemMetrics(SM_CYSCREEN);

// ウィンドウのセンタリング (中央揃え)
// ウィンドウの左上隅X座標 = (スクリーンの横幅 - ウィンドウの横幅) / 2;
// ウィンドウの左上隅Y座標 = (スクリーンの高さ - ウィンドウの高さ) / 2;
int windowPosX = (screenWidth - windowWidth) / 2;
int windowPosY = (screenHeight - windowHeight) / 2;

HWND hWnd;
hWnd = CreateWindow(
myProg.lpszClassName,
"脱出ゲーム(仮)",
WS_OVERLAPPEDWINDOW,
windowPosX,
windowPosY,
windowWidth,
windowHeight,
NULL,
NULL,
hInstance,
NULL);

// DirectXGraphicsの初期化
InitializeGraphics(hWnd, 1280, 720);

ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

// メッセージループ
MSG msg;
while (true)
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;

TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
// ゲーム画面の描画
DrawGame();

// ゲーム内時間の更新
UpdateGameFrame();
}
}

return (msg.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}

return 0;
}

2015年9月29日火曜日

[CSS]擬似クラス

ul li:first-child { color:skyblue;}


a:link{ color: violet; }

a:visited { color: orange; }

a:hover { color: pink; }

a:active { color: red; }


input::focus{ background: skyblue; }