初めまして。C++言語初心者のさちです。
今、シューティングゲームを作っていますが、弾の残数を描画できるようにしたいのですが、どうしたらいいのかわからなくて迷ってます。
そのままですが、現段階で出来ているところまで張り付けさせていただきます。
教えてください。お願いします。
// TridentGFライブラリ用のヘッダファイル
#include "TridentGF.h"
#include <iostream>
#include <windows.h>
#include <cmath>
// TridentGFライブラリ用のネームスペース
using namespace tcgf ;
// 弾の構造体
struct SHOT{
float x, y; // x,yの座標
float vx, vy; // 移動速度
float speed; // 移動速度
float max; // 移動範囲(最大)
static const int SHOT_OFF = 0; // 表示フラグ(オフ)
static const int SHOT_ON = 1; // 表示フラグ(オン)
int flag; // 表示フラグ
float tamax, tamay; // 弾の残数を描画するx,yの座標
int count; // 弾の残数をカウント
};
// 弾の管理
struct SHOT_CTRL{
static const int SHOT_MAX = 5; // 弾の出現の最大数
SHOT shot[SHOT_MAX]; // 弾の情報
};
// プロトタイプの宣言
// 弾の発射
void FlagShot(SHOT_CTRL *shot_ctrl);
// メイン
void main(void){
// ここで初期化します
SHOT_CTRL shot_ctrl;
// 弾の初期化
for (int i = 0; i < SHOT_CTRL::SHOT_MAX; i++){
shot_ctrl.shot.x = shot_ctrl.shot.y = 0.0f;
shot_ctrl.shot.vx = shot_ctrl.shot.vy = 0.0f;
shot_ctrl.shot.speed = 0.5f;
// 弾の移動範囲の限界
shot_ctrl.shot.max = 15.0f;
// 弾が表示中かどうかのフラグ
shot_ctrl.shot.flag = SHOT::SHOT_OFF;
// 弾の残数を描画する
shot_ctrl.shot.tamax = 13.5f;
shot_ctrl.shot.tamay = -10.5f;
// 弾数
shot_ctrl.shot.count = 6;
}
// ゲームループ
// Windowが閉じたら、繰り返しを終了します。
while( IsActive() ){
// ここでゲームの処理をします
// 弾の発射
int i = 0;
FlagShot(&shot_ctrl);
// 弾の残数を表示
sout << shot_ctrl.shot[i].count;
// 弾の残数が0になったら、終了する
if (shot_ctrl.shot[i].count == 0 ){
sout.location(270, 200);
sout << "終了です\n";
}
// ここで描画処理をします
// 弾の残数の描画
for (int i = 0; i < 3; i++){
for (int j = 0; j < 2; j++){
if (shot_ctrl.shot[i].count != 0 && shot_ctrl.shot[i].flag == SHOT::SHOT_OFF){
SetColor(226,113,0);
DrawSmallBox(shot_ctrl.shot[i].tamax + (float)(i * 2),shot_ctrl.shot[i].tamay - (float)(j * 2));
}
}
}
// ショットフラグがオンになったら弾の描画
if (shot_ctrl.shot[i].flag == SHOT::SHOT_ON){
SetColor(226,113,0);
DrawSmallBox(shot_ctrl.shot[i].x,shot_ctrl.shot[i].y);
}
// ここまでで描画処理を終了します。
// 描画を行います。
Render();
}
// 終了処理をします
}
// 弾の発射
void FlagShot(SHOT_CTRL *shot_ctrl){
int i;
for (i = 0; i < SHOT_CTRL::SHOT_MAX; i++){
// 弾のカウントが0じゃなかったら
if (shot_ctrl->shot[i].count != 0){
// 弾の表示がオフのとき
if (shot_ctrl->shot[i].flag == SHOT::SHOT_OFF){
// 発射キーが押された
if (GetKey(VK_SPACE)){
// 表示フラグをオンにする
shot_ctrl->shot[i].flag = SHOT::SHOT_ON;
// 位置を初期化
shot_ctrl->shot[i].x = 0.0f;
shot_ctrl->shot[i].y = 0.0f;
// 移動速度を設定する
shot_ctrl->shot[i].vy = shot_ctrl->shot[i].speed;
}
}
// 弾の表示がオンのとき
if (shot_ctrl->shot[i].flag == SHOT::SHOT_ON){
// 弾の移動速度
shot_ctrl->shot[i].vy = shot_ctrl->shot[i].speed;
// 位置を更新する
shot_ctrl->shot[i].y += shot_ctrl->shot[i].vy;
// 移動範囲の設定
if (shot_ctrl->shot[i].y >= shot_ctrl->shot[i].max){
// 表示フラグをオフにする
shot_ctrl->shot[i].flag = SHOT::SHOT_OFF;
shot_ctrl->shot[i].count = shot_ctrl->shot[i].count - 1;
}
}
}
}
}
シューティングゲームを作っているんですが…
Re:シューティングゲームを作っているんですが…
うぅわすいません、誤操作で途中で投稿してしまいました。編集キーも入れる前だったから編集できないし 汗
--
数字で書きたければ DrawStringなど、
アイコンで
●●●●●●
のように描きたければ、forループでDrawGraphなどでしょうか。
-- 追記 7/2
すみません; DrawStringやDrawGraphなどは、DXライブラリでした。
「TridentGFライブラリ」というのは分かりません... ちゃんと読まず、大変失礼しました。
ついでにすみません、「TridentGFライブラリ」について調べようとしたのですが、
全く情報が得られませんでした。ちょっと興味ありますので、
参考になるURLなど教えてもらえませんか?(逆w
--
数字で書きたければ DrawStringなど、
アイコンで
●●●●●●
のように描きたければ、forループでDrawGraphなどでしょうか。
-- 追記 7/2
すみません; DrawStringやDrawGraphなどは、DXライブラリでした。
「TridentGFライブラリ」というのは分かりません... ちゃんと読まず、大変失礼しました。
ついでにすみません、「TridentGFライブラリ」について調べようとしたのですが、
全く情報が得られませんでした。ちょっと興味ありますので、
参考になるURLなど教えてもらえませんか?(逆w
