弾の生成・管理

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

弾の生成・管理

#1

投稿記事 by おしあ » 14年前

リストを使って弾の管理をしたいのですがさっぱりわかりません。誰かご教授願います。

コード:

#include <list>
#include <iostream>
#include "DxLib.h"
using namespace std;
 
class Hyouteki
{
    int x;
public:
    Hyouteki(){ x = 500; };
    int GetX(){ return x;};
    void Move(){ x -= 2;};
};
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
         LPSTR lpCmdLine, int nCmdShow )
{
    int Cr ;
 
    // ウインドウモードに変更
    ChangeWindowMode( TRUE ) ;
 
    if( DxLib_Init() == -1 )    // DXライブラリ初期化処理
    {
         return -1; // エラーが起きたら直ちに終了
    }
    Hyouteki *p;
    // 白色の値を取得
    Cr = GetColor( 255 , 255 , 255 ) ;
    SetDrawScreen( DX_SCREEN_BACK ) ;
    int point;
    list<Hyouteki*> list;  // 双方向リスト?
    p = new Hyouteki;
    list.push_back( p );
    list.pop_front();
    point = 2;
    switch(point){
        case 1://初期化
            
            point = 2;
            break;
        case 2://メインループ
            while(CheckHitKey(KEY_INPUT_ESCAPE) == 0){
                ClearDrawScreen();
                DrawLine(500,50,500,150,GetColor(255,0,0));
                DrawLine(100,50,100,150,GetColor(255,0,0));
                if( ProcessMessage() == -1 )
                {
                    break;      // エラーが起きたらループを抜ける
                }
                //標的の作成
                p->Move();
                //キーチェック
 
                //描画
                DrawString(p->GetX(),100,"□",GetColor(255,255,255));
                if( p->GetX() == 100 ){
                    delete[]p;
                }
                ScreenFlip();
            }
            break;
    }
    
    DxLib_End() ;       // DXライブラリ使用の終了処理
 
    return 0 ;      // ソフトの終了
}

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: 弾の生成・管理

#2

投稿記事 by h2so5 » 14年前

何が分からないのか詳しく書いてください。

35行目でpop_frontしているのは何の意味があるのでしょうか。
せっかくpush_backしても直後にリストが空になってしまいます。

閉鎖

“C言語何でも質問掲示板” へ戻る