合計 昨日 今日

c言語わくわくゲームプログラミング教室の3-01で…

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

Name: draw
[URL]
Date: 2017年12月26日(火) 20:50
No: 1
(OFFLINE)

 c言語わくわくゲームプログラミング教室の3-01で…

DXライブラリ初心者です
現在14歳からはじめるc言語わくわくゲームプログラミングで学習中なのですが、74ページのテストプログラムのメイクは出来て、実行結果がウィンドウの左上に水色の四角形で描かれるはずなのに、全体が真っ黒のままで解決策がわかりません
解決策を教えてください

Name: Dixq (管理人)
(管理人)
[URL]
ウィザード(1,492,763 ポイント)
Date: 2017年12月26日(火) 21:42
No: 2
(ONLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

うちのサイトはその本となんの縁もないですし、私も本を持っていないのでいきなり74ページといわれても全く分からないです。
具体的にどんなコードでどういう環境なのでしょうか。

Name: draw
[URL]
Date: 2017年12月26日(火) 23:55
No: 3
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

Dixq (管理人) さんが書きました:うちのサイトはその本となんの縁もないですし、私も本を持っていないのでいきなり74ページといわれても全く分からないです。
具体的にどんなコードでどういう環境なのでしょうか。

Dixpさん、ご指摘ありがとうございました
次から気をつけます

環境はBorland C++ コンパイラ 5.5
drawbox関数のコードで
#include”DxLib.h”

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC )
{
ChangeWindowMode( TRUE );
if(DxLib_Init == -1) return(-1);
DrawBox( 0 , 0 , 120 , 120 , 65535 , TRUE );
WaitKey( );
DxLib_End( ) ;
return( 0 );
}

というプログラムです
上記のプログラムのメイクは出来ましたが、実行結果でウィンドウの左上に水色が描かれるはずなのに、全体が真っ暗でウィンドウが表示されます
解決策を教えてください

Name: みけCAT
[URL]
伝説なるハッカー(693,644 ポイント)
Date: 2017年12月26日(火) 23:57
No: 4
(ONLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

色を65535のようなマジックナンバーで指定すると環境依存になり、よくないです。
色はGetColor関数を用いて指定するといいでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Name: draw
[URL]
Date: 2017年12月27日(水) 00:29
No: 5
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

みけCAT さんが書きました:色を65535のようなマジックナンバーで指定すると環境依存になり、よくないです。
色はGetColor関数を用いて指定するといいでしょう。

先ほどのプログラムの65535をGetColor( 255, 255, 0 )に変えたり、
int col = Getcolor (255,255,0)と先に定義して、
65535をcolに変えて、リンクして、実行したのですが、やはり全体が真っ黒になります

Name: Math
[URL]
Date: 2017年12月27日(水) 00:51
No: 6
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

DXライブラリ置き場 http://dxlib.o.oo7.jp/
にある 大槻 有一郎先生の本 と思いますが いま手元にないのですが 過去ログに何度か答えた記憶があります。VisualStudio用に書かれた本なのでVisualStudioが使える環境だとわかりやすいとおもいます。(一時期他の方が答えられていましたがよく質問があったはずです)
ゲームのソースコードもダウンロードできますよ(^^;。
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <DxLib.h> 
 
int WINAPI WinMain(HINSTANCE h1, HINSTANCE hP, LPSTR lpC, int nC) {
 
//DXライブラリ初期化
if (DxLib_Init() == -1) return -1;
 
 //ボックスを描画
DrawBox(0, 0, 120, 120, 0x00FFFF, TRUE);
 
 //待機
WaitKey();
 
 //DXライブラリの終了
DxLib_End();
 return 0;
 }

でいいはずです。Borland C++ コンパイラ 5.5がよくわかりませんがメイクは出来たということですが Makefileはどの様にされましたでしょうか。

Name: Dixq (管理人)
(管理人)
[URL]
ウィザード(1,492,763 ポイント)
Date: 2017年12月27日(水) 00:57
No: 7
(ONLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

そのコード色々と変なので、そのままだとコンパイル通らないと思いますが、それ実行したコードのコピペですか?
このように書いて私の環境で実行したらちゃんと期待の動作をしました。
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "DxLib.h"
 
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
    ChangeWindowMode(TRUE);
    if (DxLib_Init() == -1) {
        return -1;
    }
    DrawBox(0, 0, 120, 120, GetColor(255, 255, 255), TRUE);
    WaitKey();
    DxLib_End();
    return 0;
}


その本以前少しだけ見たの思い出しました。
何故かこの人色の指定を間違った方法で記載してるんですよね、ちょいちょい間違ったコードがかかれているので注意です。

このコードを書いてもなお、画面が真っ暗なのであれば、
かいているコードとプロジェクトのコードが違うとかのケアレスミスじゃないでしょうか。
ちゃんと書いているファイルは実行対象のファイルですか?

printfDx("テスト");

のようなログを仕込んでも表示されないのであればファイルが違うなどのケアレスミスでありましょう。

Name: Math
[URL]
Date: 2017年12月27日(水) 01:13
No: 8
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

いまVisualStudio2017で正常に動作するのを確認しました。

Name: Math
[URL]
Date: 2017年12月27日(水) 01:20
No: 9
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

Makefileは(VS2017)
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
TARGETNAME=g1
 
C_FLAGS=/c /TP /EHsc /D "_MBCS" /MT  /Id:\dxlib /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /W3
 
LINK_FLAGS=/SUBSYSTEM:WINDOWS /LIBPATH:d:\dxlib "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib"
 
ALL:
    cl $(C_FLAGS) $(TARGETNAME).cpp
    link /out:$(TARGETNAME).exe $(LINK_FLAGS) $(TARGETNAME).obj
    $(TARGETNAME).exe

実行
コード[C++]: 全て選択
1
nmake -f g.mak

です。

Name: draw
[URL]
Date: 2017年12月27日(水) 07:21
No: 10
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

Dixq (管理人) さんが書きました:そのコード色々と変なので、そのままだとコンパイル通らないと思いますが、それ実行したコードのコピペですか?
このように書いて私の環境で実行したらちゃんと期待の動作をしました。
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "DxLib.h"
 
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
    ChangeWindowMode(TRUE);
    if (DxLib_Init() == -1) {
        return -1;
    }
    DrawBox(0, 0, 120, 120, GetColor(255, 255, 255), TRUE);
    WaitKey();
    DxLib_End();
    return 0;
}


その本以前少しだけ見たの思い出しました。
何故かこの人色の指定を間違った方法で記載してるんですよね、ちょいちょい間違ったコードがかかれているので注意です。

このコードを書いてもなお、画面が真っ暗なのであれば、
かいているコードとプロジェクトのコードが違うとかのケアレスミスじゃないでしょうか。
ちゃんと書いているファイルは実行対象のファイルですか?

printfDx("テスト");

のようなログを仕込んでも表示されないのであればファイルが違うなどのケアレスミスでありましょう。


printfDx(”テスト”); を仕込んでも表示されないので、ファイルが違うなどのケアレスミスだと思うんですけど、どのような手順で目的の実行対象のファイルを実行できますか?

Name: draw
[URL]
Date: 2017年12月27日(水) 07:29
No: 11
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

Math さんが書きました:Makefileは(VS2017)
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
TARGETNAME=g1
 
C_FLAGS=/c /TP /EHsc /D "_MBCS" /MT  /Id:\dxlib /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /W3
 
LINK_FLAGS=/SUBSYSTEM:WINDOWS /LIBPATH:d:\dxlib "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib"
 
ALL:
    cl $(C_FLAGS) $(TARGETNAME).cpp
    link /out:$(TARGETNAME).exe $(LINK_FLAGS) $(TARGETNAME).obj
    $(TARGETNAME).exe

実行
コード[C++]: 全て選択
1
nmake -f g.mak

です。


すいません
自分でMakefileについて調べたのですが、Makefileがわかりません
できれば教えてください

Name: Math
[URL]
Date: 2017年12月27日(水) 08:15
No: 12
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

>色を65535のようなマジックナンバーで指定すると環境依存になり、よくないです。

>何故かこの人色の指定を間違った方法で記載してるんですよね、ちょいちょい間違ったコードがかかれているので注意です。

0~1670万の間の数値なら問題ないと思いますが。(詳しくは256 x 256 x 256 = 16 777 216まで)
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <DxLib.h> 
 
int WINAPI WinMain(HINSTANCE h1, HINSTANCE hP, LPSTR lpC, int nC) {
 
 unsigned int col;
 
//DXライブラリ初期化
if (DxLib_Init() == -1) return -1;
 
col=GetColor(0, 255, 255);
 
printfDx("テスト%x",col);
 
 
 //ボックスを描画
DrawBox(0, 0, 120, 120, 65535, TRUE);
 
 //待機
WaitKey();
 
 //DXライブラリの終了
DxLib_End();
 return 0;
 }

VS2017で動作確認済みです。256 x 256 = 65 536 ですね。

Name: uni
[URL]
Date: 2017年12月27日(水) 08:26
No: 13
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

本のページだけでは伝わらないことくらいすぐに分かるでしょう
回答してあげる側の手を煩わせないよう、完全な質問にしてから聞いてください

Makefileも調べが足りないのではないでしょうか?
どう調べたかなど言ってもらわないと、分かってない以上は調べてないと思われても不思議ではありません

Name: Math
[URL]
Date: 2017年12月27日(水) 08:31
No: 14
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

ここhttp://dxlib.o.oo7.jp/use/dxuse_bcc.html#R1の設定を途中までやってみましたがとても面倒なのでやめました。(><)

この設定で実行されていると思われますがコンフィグ・ファイルが私には理解できないので 時間がありません。VisualStudio用なら詳しく説明できるのですが…
(再度設定を確認されると解決するかもしれませんね)

Name: Math
[URL]
Date: 2017年12月27日(水) 09:22
No: 15
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

>色を65535のようなマジックナンバーで指定すると環境依存になり、よくないです。

HTML等では色を数値であらわすのが一般的とおもいます。https://www.colordic.org/

Name: Math
[URL]
Date: 2017年12月27日(水) 09:44
No: 16
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

>本のページだけでは伝わらないことくらいすぐに分かるでしょう
偶然てあるものですね。そのページのプログラムがあったのです。(^^;
藁にもすがりたいときは いってみるものですね…。(確率的にここには質問が多そうな問題ではありますね)

Name: Dixq (管理人)
(管理人)
[URL]
ウィザード(1,492,763 ポイント)
Date: 2017年12月27日(水) 10:26
No: 17
(ONLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

uniさん

自分のトピック内で面白おかしく話を展開するのはまだ許せますが
他のトピックで遊ぶのは見逃せません。
もし次に似たような記述をしたら削除します。

ここに返答を書かないで下さい。
もし反論があれば、この言動の元となったトピックに書いて下さい。

Name: Dixq (管理人)
(管理人)
[URL]
ウィザード(1,492,763 ポイント)
Date: 2017年12月27日(水) 14:51
No: 18
(ONLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

drawさん

普通VisualStudioで作るのでmakefileが分からないなら
VisualStudioの環境でコンパイルしてみてください。


Mathさん

色コードは画面のカラービット数が変化すると変わるはずです。
リファレンスにも関数を利用するように書かれています。
http://dxlib.o.oo7.jp/function/dxfunc_graph3.html#R4N5

Name: draw
[URL]
Date: 2017年12月27日(水) 18:22
No: 19
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

多分、visual studioの環境でする人が多い(←偏見)ので、
今の環境から、visual studioの環境に変えて、また1から出直そうかと思います

(そちらのほうがスムーズに受け答えできると思うので)

もし、ゲームプログラミングが目的でしていたという人で、visual studioの環境でどんな手順を踏んで学んだか、オススメの本など教えてください

例)手順1:~~という本でC言語を勉強
手順2:~~という本でゲームプログラミングを勉強
手順3:自作ゲームを作成

最初の話と全然変わってしまい、申し訳ありません

Name: Dixq (管理人)
(管理人)
[URL]
ウィザード(1,492,763 ポイント)
Date: 2017年12月27日(水) 18:40
No: 20
(ONLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

私はひたすらDXライブラリーのリファレンスを読んで勉強しましたが、
私のノウハウを当サイトで公開してますので、よかったら参考にして下さい

http://dixq.net/g

http://dixq.net/rp2

Name: draw
[URL]
Date: 2017年12月28日(木) 08:19
No: 21
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

[解決!]

Dixqさん、参考にしてみます

また、主にご協力してくれたDixqさん、Mathさん、ありがとうございました

Name: Math
[URL]
Date: 2018年1月06日(土) 22:04
No: 22
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

[雑談]突然ですが
正誤表 と ソースコードがここにあります。(^^;
http://www.rutles.net/download/411/

Name: Math
[URL]
Date: 2018年1月11日(木) 06:31
No: 23
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

http://dixq.net/forum/viewtopic.php?f=3&t=19901
画像
http://dxlib.o.oo7.jp/use/dxuse_cpp_builder.html

C++Builder はDelphiのC++版である。
https://ja.wikipedia.org/wiki/C%2B%2B_Builder
「FireMonkey や Visual Component Library (VCL) を利用するIDEを持つDelphiのC++版である。」

C#はDelphiをベースにしている。
https://ja.wikipedia.org/wiki/C_Sharp

https://ja.wikipedia.org/wiki/C%2B%2B_Builderによると 「Borland C++ コンパイラ 5.5」は C++Builderに受け継がれているようでしかも旧いらしい。
画像

「Borland C++ コンパイラ 5.5」を使うより「C++Builder」使えば設定はしなくてもつかえますよ。


Name: Math
[URL]
Date: 2018年1月12日(金) 09:17
No: 25
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

「C++Builder」テストしてみました。VisualStudio2015のprogramがそのまま動きました。
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <math.h>
#include "DxLib.h"
// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        LPSTR lpCmdLine, int nCmdShow )
{
    int x;
    int y;
    double dx;
    double dy;
    /////////////////////////////////////////////////////////////
    //コンソールを作成し,標準入出力に割り当てる
    AllocConsole();
    freopen("CONOUT$", "w", stdout); //標準出力をコンソールにする
    /////////////////////////////////////////////////
    //コンソールを作成し,標準入出力に割り当てている
    printf("WinMain:start\n");
 
    ChangeWindowMode(TRUE);          // ウインドウモードに設定
 
    if( DxLib_Init() == -1 )        // DXライブラリ初期化処理
    {
        return -1 ;         // エラーが起きたら直ちに終了
    }
 
    UINT White = GetColor(255, 255, 255);  // 白色の取得
    DrawString(30, 20, "*** 正弦波 余弦波 ***", White);  // 文字を書く
 
    LoadGraphScreen(30, 50, "D:\\img\\pc01.png", TRUE);  // 画像を描画する
 
    printf("軸線:start\n");
    y = 240;
    for(x=0; x < 640; x++){
        DrawPixel( x, y, White ) ;  // 点を打つ
    }
    printf("正弦波:start\n");
    for(x=0; x < 640; x++){
        dy = -240 * sin( (3.14 / 180) * x );
        y = (int)dy;
        y = 240 + y;
        DrawPixel( x, y, GetColor( 0,255,255 ) ) ;  // 点を打つ
    }
    printf("余弦波:start\n");
    for(x=0; x < 640; x++){
        dy = -240 * cos( (3.14 / 180) * x );
        y = (int)dy;
        y = 240 + y;
        DrawPixel( x, y, GetColor( 255,255,0) ) ;   // 点を打つ
    }
    printf("WaitKey:start\n");
    WaitKey() ;             // キー入力待ち
    printf("DxLib_Init:end\n");
 
    printf("WaitKey:start\n");
    DxLib_End() ;               // DXライブラリ使用の終了処理
    printf("DxLib_Init:end\n");
 
    printf("WinMain:end\n");
    return 0 ;              // ソフトの終了
}

http://www2.koyoen.birdview.co.jp/~abcxyz/c2.jpg
http://www2.koyoen.birdview.co.jp/~abcxyz/c1.jpg

Name: Math
[URL]
Date: 2018年1月14日(日) 16:45
No: 26
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

http://dixq.net/g/
3d.01 3Dモデルを表示してみよう をお借りして
「C++Builder」テストしてみました。そのまま動きました。

http://www2.koyoen.birdview.co.jp/~abcxyz/k.jpg

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// ここにサンプルプログラムをペーストしてください
/***** main.cpp *****/
 
#include <DxLib.h>
 
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
 
    //3Dモデルの読み込み
    int ModelHandle = MV1LoadModel( "G:/dat/Lat式ミク/Lat式ミクVer2.3_Normal.pmd" ) ;
 
    //奥行0.1~1000までをカメラの描画範囲とする
    SetCameraNearFar( 0.1f, 1000.0f ) ;
 
    //(0,10,-20)の視点から(0,10,0)のターゲットを見る角度にカメラを設置
    SetCameraPositionAndTarget_UpVecY( VGet( 0, 10, -20 ), VGet( 0.0f, 10.0f, 0.0f ) ) ;
 
    while(!ScreenFlip()&&!ProcessMessage()&&!ClearDrawScreen()){
 
        // 3Dモデルの描画
        MV1DrawModel( ModelHandle ) ;
 
    }
 
    DxLib_End();
    return 0;
}

Name: MathMath
[URL]
Date: 2018年1月23日(火) 07:55
No: 27
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

>すいません
>自分でMakefileについて調べたのですが、Makefileがわかりません
>できれば教えてください
(No.11)
>ここhttp://dxlib.o.oo7.jp/use/dxuse_bcc.html#R1の設定を途中までやってみましたがとても面倒なのでやめました。(><)

>この設定で実行されていると思われますがコンフィグ・ファイルが私には理解できないので 時間がありません。VisualStudio用なら詳しく説明>できるのですが…

過去ログで何度かMakefileについて回答しています。

ここhttp://dxlib.o.oo7.jp/use/dxuse_vscom2017.html#R4の説明を置き換えたものが
http://www2.koyoen.birdview.co.jp/~abcxyz/x.jpg
になります。

Microsoftのmakeは nmake.exe です。
Borland C++ では make.exe です。

Name: Math
[URL]
Date: 2018年1月24日(水) 19:01
No: 28
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

[VS2017 Community の場合:開発車用コマンドプロンプトを使用したDXライブラリのコンパイル]
いま d:\dxlib に DxLib_VC\プロジェクトに追加すべきファイル_VC用の内容を置いて
メイクファイルを下記のように書きます。

g.mak
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
 
TARGETNAME=main
 
C_FLAGS=/c /TP /EHsc /D "_MBCS" /MT  /Id:\dxlib /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /W3
 
LINK_FLAGS=/SUBSYSTEM:WINDOWS /LIBPATH:d:\dxlib "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib"
 
ALL:
    cl $(C_FLAGS) $(TARGETNAME).cpp
    link /out:$(TARGETNAME).exe $(LINK_FLAGS) $(TARGETNAME).obj
    $(TARGETNAME).exe


ソースファイルを
http://dixq.net/g/
3d.02 カメラを回転してみようう からお借りして

main.cpp
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <math.h>
#include <DxLib.h>
 
static const float ROTATE_SPEED = DX_PI_F/90;//回転スピード
 
// (x,y)の点を(mx,my)を中心にang角回転する
void rotate(float *x, float *y, const float ang, const float mx, const float my){
    const float ox = *x-mx, oy = *y-my;
    *x =  ox * cos(ang) + oy * sin(ang);
    *y = -ox * sin(ang) + oy * cos(ang);
    *x += mx;
    *y += my;
}
 
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
 
    float cameraX=0, cameraZ=-20;    //カメラの座標
    const float targetX=0, targetZ=0;//カメラの視線の先ターゲットの座標
 
    //3Dモデルの読み込み
    int ModelHandle = MV1LoadModel( "G:/dat/Lat式ミク/Lat式ミクVer2.3_Normal.pmd" ) ;
 
    //奥行0.1~1000までをカメラの描画範囲とする
    SetCameraNearFar( 0.1f, 1000.0f ) ;
 
    while(!ScreenFlip()&&!ProcessMessage()&&!ClearDrawScreen()){
 
        if( CheckHitKey(KEY_INPUT_LEFT) > 0 ){//左キーが押されていたら
            rotate(&cameraX, &cameraZ, +ROTATE_SPEED, targetX, targetZ);//回転
        }
        if( CheckHitKey(KEY_INPUT_RIGHT) > 0 ){//右キーが押されていたら
            rotate(&cameraX, &cameraZ, -ROTATE_SPEED, targetX, targetZ);//回転
        }
 
        //第一引数の視点から第二引数のターゲットを見る角度にカメラを設置
        SetCameraPositionAndTarget_UpVecY( VGet( cameraX, 10, cameraZ ), VGet( targetX, 10.0f, targetZ ) ) ;
 
        // 3Dモデルの描画
        MV1DrawModel( ModelHandle ) ;
 
    }
 
    DxLib_End();
    return 0;
}


実行バッチファイル

g.bat
コード[C++]: 全て選択
1
nmake -f g.mak


実行結果
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
G:\z18g\0124>g
 
G:\z18g\0124>nmake -f g.mak
 
Microsoft(R) Program Maintenance Utility Version 14.11.25508.2
Copyright (C) Microsoft Corporation.  All rights reserved.
 
        cl /c /TP /EHsc /D "_MBCS" /MT  /Id:\dxlib /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /W3 main.cpp
Microsoft(R) C/C++ Optimizing Compiler Version 19.11.25508.2 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.
 
main.cpp
main.cpp(9): warning C4244: '=': 'double' から 'float' への変換です。データが失われる可能性があります。
main.cpp(10): warning C4244: '=': 'double' から 'float' への変換です。データが失われる可能性があります。
        link /out:main.exe /SUBSYSTEM:WINDOWS /LIBPATH:d:\dxlib "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" main.obj
Microsoft (R) Incremental Linker Version 14.11.25508.2
Copyright (C) Microsoft Corporation.  All rights reserved.
 
        main.exe


http://www2.koyoen.birdview.co.jp/~abcxyz/あ.jpg

http://www2.koyoen.birdview.co.jp/~abcxyz/い.jpg

ファイル
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
G:\z18g\0124>DIR
 ドライブ G のボリューム ラベルがありません。
 ボリューム シリアル番号は 9016-4EF8 です
 
 G:\z18g\0124 のディレクトリ
 
2018/01/24  15:06    <DIR>          .
2018/01/24  15:06    <DIR>          ..
2018/01/24  18:17                16 g.bat
2018/01/24  18:27             1,554 main.cpp
2018/01/24  18:26               467 g.mak
2018/01/24  18:31             4,786 main.obj
2018/01/24  18:31         6,228,992 main.exe
2018/01/24  18:57            11,440 Log.txt
               6 個のファイル           6,247,255 バイト
               2 個のディレクトリ   4,492,361,728 バイトの空き領域
 
G:\z18g\0124>

Name: Math
[URL]
Date: 2018年1月28日(日) 21:32
No: 29
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

上のことは VS2008 でも 全く変更なしで実行できます。(Windows10 です)
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Setting environment for using Microsoft Visual Studio 2008 x86 tools.
 
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>g:
 
G:\>cd z18g
 
G:\z18g>cd 0124
 
G:\z18g\0124>g
 
G:\z18g\0124>nmake -f g.mak
 
Microsoft(R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.
 
        cl /c /TP /EHsc /D "_MBCS" /MT  /Id:\dxlib /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /W3 main.cpp
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.
 
main.cpp
        link /out:main.exe /SUBSYSTEM:WINDOWS /LIBPATH:d:\dxlib "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" main.obj
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.
 
        main.exe


http://www2.koyoen.birdview.co.jp/~abcxyz/て.jpg

Name: Math
[URL]
Date: 2018年2月05日(月) 09:07
No: 30
(OFFLINE)

 Re: c言語わくわくゲームプログラミング教室の3-01で…

>環境はBorland C++ コンパイラ 5.5

とはエンバカデロ・テクノロジーズ社が提供されているフリーのコンパイラBorland C++ Compiler 5.5の事でしょうか。[VersionはEmbarcadero C++ 7.30 for Win32 Copyright (c) 2012-2017 Embarcadero Technologies, Inc.]

https://www.embarcadero.com/jp/free-tools
[BCC32コンパイラは、エンバカデロのC++Builder製品ファミリーで利用されているC++コンパイラのルーツとなるコマンドラインコンパイラです。
C++コンパイラの無料ダウンロード版には、C++11言語サポート、Dinkumware STL(Standard Template Library)フレームワーク、Embarcadero C/C++ Runtime Library(RTL)が含まれています。この無料バージョンには、ハイパフォーマンスリンカやリソースコンパイラなどのいくつかのC/C++コマンドラインツールも含まれています。]
とあります。

ここhttp://cm.hit-u.ac.jp/~kobayashi/topics/compiler.htmlに使い方があります。

コマンドプロンプトのオプションは次のようです。
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Embarcadero C++ 7.30 for Win32 Copyright (c) 1993-2017 Embarcadero Technologies, Inc.
使用できるオプション (* はデフォルトの設定。 xxx はサブオプションで、-h -X などで表示):
(メモ: -X- または -w-XXX を指定すると、通常、-X または -wXXX による設定または設定解除が取り消されます。)
 2 つのオプションが競合する場合は、最後に指定されたものが使用されます)
--sysroot ヘッダー、ライブラリ、フレームワークの論理的なルート ディレクトリを
       設定します
      (--sysinc または --syslib で指定されたパスや '/' で始まる -F パスには
       この値が先頭に付加されます)
--sysinc  システム インクルード ファイルの検索パスを設定する
      (指定された場合、sysroot が先頭に付加される)
--syslib  システム ライブラリ ファイルの検索パスを設定する
      (指定された場合、sysroot が先頭に付加される)
--savemem SAVEMEM メモリの最大サイズ (MB 単位) を設定する
      (これは、グローバル シンボルおよび類似の構文要素を格納するために
       割り当てられる連続したメモリです。プリコンパイル済みヘッダーでは
       このメモリを使用します)
--version コンパイラのバージョンを表示する
--replacehdr ヘッダー名を置換 (たとえば --replaceHeader=a.h=b.h)
--xrtti   拡張 RTTI 情報の生成
  -3      80386 保護モード互換命令を生成
  -4      80386/80486 保護モード互換命令を生成
  -5      Pentium 命令を生成
  -6      Pentium Pro 命令を生成
  -Axxx   ANSI 準拠を有効にする
  -B      .ASM にコンパイルして (-S) から .OBJ にアセンブルする
  -Cxxx   コメントのネストを有効にする
  -D      -D<name>'name' をヌル文字列と定義します。
       または、-D<name>=<value> を使用してください
  -E      使用するアセンブラを指定
  -G      サイズ/速度を最適化する (-O1 および -O2 を使用)
  -Hxxx   プリコンパイル ヘッダーを生成し、使用します
  -I      インクルード ファイルの検索パスを設定します
  -Jxxx   テンプレート生成オプション
  -K      デフォルトの文字型を符号なしに設定
  -L      ライブラリ ファイルのサーチ パス
  -M      リンカ マップ ファイルを作成します
  -N      さまざまなオプション (-h -N を参照)
  -Nd     マクロはデフォルトで "1" の値を取得します (-DX => -DX=1)
  -Nt     GNU __typeof(var) をサポートします
  -Nv     void& を有効なタイプとして許可します
  -O      ジャンプの最適化
  -P      ソースの拡張子に関係なく C++ コンパイルを実行
  -Q      拡張コンパイラ エラー情報
  -Rxxx   .OBJ ファイルにブラウザ情報を含めます
  -S      アセンブリ コードにコンパイル
  -T      アセンブラ オプション (たとえば -Tx) を指定
  -U      以前の名前定義をすべて取り消す
  -Vxxx   互換オプション
  -W      ターゲットは Windows アプリケーションです
  -X      コンパイラに自動依存情報を出力させない
  -Zd     グローバル定義を DocBook 仕様として出力します (-Zd=<file>.c を使用)
  -Zn     and/or の無効化は CodeGear ビルトインを定義しません
  -Zx     グローバル定義を XML ファイルに出力します。
          サブ オプション:
        -Zx=<ファイル名> <ファイル名> 内の型/宣言のみ出力
        -Zxf[=<ファイル名>] 基底型メンバを省略
        -Zxm[=<ファイル名>] マクロを出力
        -Zxp[=<ファイル名>] ファイルおよび行の位置を出力
  -axxx   データ アラインメント境界を設定します。
       デフォルトは -a8 です (-a--a1 と同じ)
  -b      -bi を有効にして、型チェックの観点から列挙型を整数型 (int) として扱う
* -bi     sizeof(enum x) == sizeof(int) にします。
       ただし明示的に指定する場合を除きます
  -c      オブジェクト ファイル (.obj) にコンパイルし、リンクしません
  -d      重複文字列をマージ
  -dc     文字列を読み取り専用データ セグメントに挿入
  -dw     文字列を (書き込み可能) データセグメントに挿入します
  -e      ターゲット実行可能パス名を指定します
* -ff     高速浮動小数点演算
  -fp     Pentium FDIV 問題の回避
* -fq     サイレント モードの浮動小数点比較命令 (FUCOMP) を使用
  -g      n 回の警告の後でバッチ コンパイルを停止するように指定します
        (デフォルト = 255)
  -h      ヘルプを要求します ('-h -' はすべてのヘルプを表示) 。  
       特定のヘルプを指定できます (-h -V)
  -i      識別子として認識される最大長を指定 (デフォルト = 250)
  -j      n 回のエラー発生後にバッチ コンパイルを停止 (デフォルト = 50)
* -k      標準スタック フレームを生成します
  -l      オプションをリンカに渡します (: -ls -l-x)
  -m      メイクファイルの依存情報を生成します
  -md     依存情報をオブジェクト ファイルではなく .d ファイルに挿入します
  -mm     依存情報の生成中はシステム ヘッダー ファイルを無視します
  -mo     依存情報の出力ファイルを指定します
  -n      オブジェクト ファイルの出力ディレクトリを設定します
  -o      出力ファイル名を設定します (-o<ファイル名> または -o <ファイル名>)
  -pxxx   Pascal の呼び出し規約を使用
  -q      コンパイラ識別バナーを抑止します
  -r      レジスタ変数を使用
  -rd     register キーワードが使用された場合にのみレジスタ変数を使用
  -s      システムの非インクリメンタル リンクを使ってリンクします
  -t      ターゲットの実行可能ファイルを指定する
* -u      アンダースコアを付けてシンボル名を生成する
  -vxxx   ソース デバッグを有効にします
  -w      すべての警告を表示します
  -w!     警告時にコンパイラから非 0 を返す
  -xxxx   例外処理を有効にする
  -y      デバッグ行番号:
  -z      標準セグメント名の再定義のオプション
特定のオプションに関するヘルプを参照するには '-h <オプション>' を使用します。
    使用可能なオプションをすべて参照するには '-h -' を使用します。

次へ

Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: よもやま & ゲスト[10人]