1181722
Tonyu BBS
[再読み込み] [ホームページ] [使いかた] [ワード検索] [管理用]

おなまえ

Eメール
題  名  
コメント(http(s)://などのURLが含まれていると投稿できないことがあります)
添付プログラム
※プログラムに関する質問は、そのプログラムを添付して送ると対応が早くできます
添付方法...
削除キー (自分の記事を削除時に使用。英数字で8文字以内)
文字色
ファイアボール 投稿者 : おへっほー(ntsitm184146.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/05(Mon) 19:26 No.13263
 


今度はファイアボールを作っています。
そこで、チュートリアルのバウンドを利用したのですが
 y+=vy;
 vy+=0.1;
 if (y>$screenHeight) {y=$screenHeight; vy=-vy;}
 x+=1;
をどのように改良したほうがいいでしょうか?


Re: ファイアボール 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/05(Mon) 20:26 No.13266
 
while(1){}で囲ってください


Re: ファイアボール 投稿者 : おへっほー(ntsitm184146.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/05(Mon) 20:34 No.13267
 
ここはさすがに初心者には難しいので諦めます‥‥

甲羅 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 06:48 No.13232
 


Download:13232.txt 13232.txt 今、甲羅を作ってます。甲羅を踏むと、アニメーションと甲羅が動かなくなり、横から蹴るとまた動き出すという風にしたいです。プログラムは少し長いので添付しておきます。


Re: 甲羅 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 13:07 No.13235
 
有名なあれですね…w
あの動きは初心者には少し難しいかもしれませんが、ヒントとして動きのフロチャート的なのをあげておきます。
Flowchart:
  スタート(変数の初期化とか)
┌─>↓        Yes                          Yes                   Yes
│自機と当った → アニメーションストップ中? → 自機が自分よりも上 → アニメーションをストップ
│   ↓ No                    ↓ No                    ↓ No                   │
│update();←┬─移動開始(vxに値を代入とか)     自機を死亡させる               │
└─-┘      └────────────────────────────────┘

無駄に横長いうえに細かい部分は削っていますが、基本こんなものです。
あとは今までの知識を活用して試行錯誤してください。
アニメーションが止まってるかを調べる関数は無かったような気がするので、適当に変数を作ってフラグとして活用したりしてください。


Re: 甲羅 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 13:11 No.13236
 
有名なあれですね…w
あの動きは初心者には少し難しいかもしれませんが、ヒントとして動きのフロチャート的なのをあげておきます。
Flowchart:
  スタート(変数の初期化とか)
┌─>↓        Yes                          Yes                   Yes
│自機と当った → アニメーションストップ中? → 自機が自分よりも上 → アニメーションをストップ
│   ↓ No                    ↓ No                    ↓ No                   │
│update();←┬─移動開始(vxに値を代入とか)     自機を死亡させる               │
└─-┘      └────────────────────────────────┘

無駄に横長いうえに細かい部分は削っていますが、基本こんなものです。
あとは今までの知識を活用して試行錯誤してください。
アニメーションが止まってるかを調べる関数は無かったような気がするので、適当に変数を作ってフラグとして活用したりしてください。


Re: 甲羅 投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/04(Sun) 13:11 No.13237
 
当たり判定の動作を、

1:動いている時は自機がやられるかどうかの判定をする
2:止まっている時は自機と反対方向に速度を加える

というようにif〜else文を加えればそのようになるはず。



と書こうとしたか先に書かれてしまいました・・・;

動いているかどうかをアニメーションではなくvxで判断したほうが良いかも。


Re: 甲羅 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 13:14 No.13238
 
有名なあれですね…w
あの動きは初心者には少し難しいかもしれませんが、ヒントとして動きのフロチャート的なのをあげておきます。
Flowchart:
  スタート(変数の初期化とか)
┌─>↓        Yes                          Yes                   Yes
│自機と当った → アニメーションストップ中? → 自機が自分よりも上 → アニメーションをストップ
│   ↓ No                    ↓ No                    ↓ No                   │
│update();←┬─移動開始(vxに値を代入とか)     自機を死亡させる               │
└─-┘      └────────────────────────────────┘

無駄に横長いうえに細かい部分は削っていますが、基本こんなものです。
あとは今までの知識を活用して試行錯誤してください。
アニメーションが止まってるかを調べる関数は無かったような気がするので、適当に変数を作ってフラグとして活用したりしてください。


Re: 甲羅 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 13:14 No.13239
 
すいませんなぜか重複してました


Re: 甲羅 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 13:36 No.13240
 
進行方向は、止まるために必要でおいています。あと、自機がふれると死ぬフラグを立ててしまっているので、蹴ることができません。一応こんな感じでできました。
if($Sell.vx=0){
   if ($Mychar.x < x+1 && $Mychar.x > x-1)
   x+=vx;
 }else{
   x-=vx;
 }
上から(仮)「甲羅が止まっているとき、自機がぶつかると動き出す。」です。
これであってるかはわかりませんが、改良できるのならお願いします。

推薦記事: ジャンプ台


Re: 甲羅 投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/04(Sun) 14:24 No.13244
 
甲羅の速度を変えるためにvxに値を入れます。
x+=vx;はvxだけ移動してるだけなので注意。
また、甲羅自身の変数を参照する場合は「$sell.」は不要です。


if(vx==0){  // 甲羅が止まっている時
  if ($Mychar.x - x < 0) vx= 4; // Mycharとのx座標を比較
  else                   vx=-4; // Mycharから離れるようにvxを代入する
  a.loop($pat_shell+0,$pat_shell+3,3);
  // アニメーションを再開させる
  noHit = 6;  // 数フレーム無敵にする(蹴った瞬間に死ぬのを防ぐため)
} else {  // 動いているとき
  if ( $Mychar.y < y-8 ) {
    // 自機が敵より少し上にいるならば
    vx=0; // 進行方向
    a.pause(); 
  } else if(noHit>0){
     $Mychar.die(); // そうでなければ自機が死ぬ
     $projectManager.loadPage($page_index);
  }
}

(プログラムの初めにnoHit=0;を、update();の上にnoHit--;を置いてください)

当たり判定の中身はだいたいこのようなプログラムになると思います。
蹴った瞬間に死んでしまうのを防ぐためにnoHit変数を使用しました。


Re: 甲羅 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 14:45 No.13246
 
蹴って6フレームぐらいすると自機が死んでしまいます。どうすればいいでしょうか?

推薦記事: ジャンプ台


Re: 甲羅 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 15:10 No.13248
 
どうやら上から乗っかると蹴れるようです。
今度は自分用の甲羅を作りたいのですが、
extends SpriteChar;
p=$pat_shell+0;
noHit=300;
vx=5; // 進行方向
a=newAnimation(); // AnimationAdapterを作成
a.loop($pat_shell+0,$pat_shell+3,3);// 敵の2つのパターンを往復するアニメーション
while (1) {
  if (crashTo($Sell)) {
    // 自機とぶつかったら
    if ( $sell.y < y-8 && $sell.vy>0 ) {
      // 自機は敵より少し上にいて、下方向に速度をもっているならば
      vx=0; // 進行方向
a.pause();
p=$pat_shell+0;
$Myshell.vy=-5; // 自機がはねあがる
$score=$score+100;
    } else {

     }
  }
  if ($map.getAt(x+10,y)==$pat_Block+1) { // 進行方向のマップパターンを調べ、ブロックのパターンだったら
    vx=-vx; // 進行方向を反転する
    
  }
  
  for (t in $chars) {
    if ( t is Weapon && crashTo(t) ) {
      $score=$score+100;
       die();
    }
  }
  x+=vx; // 進行方向へ進む
  if (vx<0) f=1; else f=0; // vx が負(左向き)なら反転
  if ($map.getAt(x,y+10)==$pat_Block+0) y+=3;
  noHit--;
      update();
}
のプログラムに自機が乗ると動き出し、自由に操作できる。
敵甲羅と当ると跳ね返るが、HPが1つ減る。
という風にしたいのですが、どうすればいいでしょうか?
TonyuアクションRPG様のリフトに乗るのサンプルのプログラムを見てみましたが、それにあたるようなプログラムはありませんぜした。
お願いします。

推薦記事: ジャンプ台


Re: 甲羅 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 15:36 No.13251
 
「甲羅に自機が乗る」ということは、どういった感じのプログラムを組めばよいと思いますか?まずはそれを書き出してみましょう。


Re: 甲羅 投稿者 : おへっほー(ntsitm184146.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 16:21 No.13254
 
簡単に言いますと、自機が甲羅の上に触れると乗るような状態にしたいです。
他の敵甲羅に20回当たると壊れるようにしたいです。
このプログラムはさすがに知らないのでお願いします。

推薦記事: ジャンプ台


Re: 甲羅 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 16:36 No.13255
 
>自機が甲羅の上に触れるとのるような状態にしたい
自機を$Mycharと仮定して、
if(crashTo($Mychar) && $Mychar.y < y && $Mychar.vy > 0){
  //上にぶつかった
  ridingFlag = 1;// のってる
}
あとは、ridingFlagが1の時に自機を甲羅の上に固定すれば予想通りの動きになるかと思います。
> 敵甲羅に20回当たると壊れるようにしたい
変数を使います。
甲羅をshellクラスと仮定して
hp = 20;
while(1){
  for(e in $chars){
    if(e is shell && crashTo(e)){
      hp--;// 耐久度(hp)を減らす
      vx = -vx;// 進行方向を変更
    }
  }
(プログラムのかけらです)


Re: 甲羅 投稿者 : おへっほー(ntsitm184146.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 17:04 No.13257
 
  if($Myshell){
        if (wY== 0 && ld==0)
      {if($map.getAt(x,y-20)==$pat_block+0){vy+=0.4;}}
  }
としてみましたが、自分が宙に浮いてくれません。
どうしたらいいでしょうか?
上から、

もし、Myshellに触れてたら自機を宙に浮かせる?

的な感じです。どこを改良すればいいでしょうか?

推薦記事: ジャンプ台


Re: 甲羅 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 21:00 No.13261
 
それじゃあ浮きません。当たり前ですね。
甲羅に乗るというのは、言い換えれば「甲羅の座標の真上に自機を固定する」ことです。

アイテム 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/03(Sat) 07:31 No.13226
 


アイテムを取ると移動速度がアップさせるようにしたいです。
a=new Array();
a.add(20);
a.add(1);
while(1) {
  i++;
  if (getkey(32)>1 && i>a.get(0)) {
    for(ii=1;ii<=a.get(1);ii++) appear(new Tama((x-5*(a.get(1)-1-2*(ii-1))),y,$pat_Sample+1));
をどのように改良すればいいですか?


Re: アイテム 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/03(Sat) 12:15 No.13229
 
それだけだと改良場所が見つからないので全部作ります。
Item.tonyu:
extends SpriteChar;

while(1){
  if(crashTo($Mychar)){
    $Mychar.spd += 2;
    die();
  }
  update();
}
----------------------------------------------
Mychar.tonyu:
extends SpriteChar;

spd = 2;
while(1){
  if(getkey(37)) x -= spd;
  if(getkey(39)) x += spd;
  if(getkey(38)) y -= spd;
  if(getkey(40)) y += spd;
  update();
}
----------------------------------------------

基本はこれです(見おろし型フィールド前提で作りました)。
あとは自由に改良なりして下さい。


Re: アイテム 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 13:41 No.13243
 
ありがとうございます!おかげでスピードアップが使えるようになりました。

推薦記事: ジャンプ台


Re: アイテム 投稿者 : おへっほー(ntsitm184146.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 20:08 No.13259
 
でも、スピードアップ制限はつけれないんですか?
自分で付けてみたら初期化に失敗してしまったので。


Re: アイテム 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 20:58 No.13260
 
変数に制限をつける方法は「ある一定以上の値になった時、変数を強制的に決めた値にする」という方法で実装できます。ここまで来ればわかりますよね。

ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/08/31(Wed) 14:32 No.13163
 


今、時限爆弾と、ジャンプ台を作っています。時限爆弾はもうスレを作ったので、ジャンプ台のことを言いたいと思います。
ジャンプ台があり、Mycharが乗ると、バネのように伸び縮みするようにしたいです。
今のところ、とりあえず乗ると弾むことができるようにはできましたが、ジャンプしたりアニメーションにすることができません。どなたか改良してくれる人はいないでしょうか。プログラムは
extends SpriteChar;
p=$pat_maze+7;
a=newAnimation();
while (y<$screenHeight) {
  for (t in $chars) {
    if ( t is Mychar && crashTo(t) ) {
      $Mychar.vy=-5; // 自機がはねあがる
    }
  }
    tile=$map.getAt($Mychar.x,$Mychar.y+16);{
  if (tile==$pat_maze+7) $Mychar.vy=-6;

}
    update();
}
です。


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/08/31(Wed) 14:39 No.13165
 
Download:13165.zip 13165.zip ジャンプ台の画像を添付しておきます。ジャンプ台は、下のばねのような画像3個です。

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/08/31(Wed) 15:06 No.13166
 
プログラムを自分の分かる限界まで省略してみました。
extends SpriteChar;
while (y<$screenHeight) {
    for (t in $chars) {
    if ( t is Mychar && crashTo(t) ) {
      $Mychar.vy=-7; // 自機がはねあがる

    }
  }
  update();
}
です。
アニメーションは、どこに入れればいいでしょうか。
また、AnimationAdaptor関数を使用しなければできないのでしょうか。

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/08/31(Wed) 15:22 No.13167
 
プログラムを自分の分かる限界まで省略してみました。
extends SpriteChar;
while (y<$screenHeight) {
    for (t in $chars) {
    if ( t is Mychar && crashTo(t) ) {
      $Mychar.vy=-7; // 自機がはねあがる

    }
  }
  update();
}
です。
アニメーションは、どこに入れればいいでしょうか。
また、AnimationAdaptor関数を使用しなければできないのでしょうか。

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/08/31(Wed) 15:26 No.13168
 
アニメーションはできました。でも、自機が離れてもアニメーションが続いてしまいます。自機が離れると、ジャンプ台の最初の画像に戻るようにしたいです。プログラムは
extends SpriteChar;
a=newAnimation();
p=$pat_maze+7;
while (y<$screenHeight) {
  
  for (t in $chars) {
    if ( t is Mychar && crashTo(t) ) {
      updateEx(8); // 8フレーム待機
      $Mychar.vy=-7; // 自機がはねあがる
      a.pause();     // 動いていないときはアニメーションを止める。
      a.loop($Pat_maze+7,$Pat_maze+9,9);
    }
  }
  update();

}
です。
ストップ命令のスプリクトを入れてもストップしてくれません。
できる人、お願いします。

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : ぐりーんげーむ。(p1186-ipngn808hodogaya.kanagawa.ocn.ne.jp)
- 2011/08/31(Wed) 17:55 No.13175
 
今のプログラムでは、

tが自機で、当たっていればアニメーションを止めてアニメーションをさせる。

となってしまっています。

-----------------
tが自機で、当たっていればアニメーションをさせて、当たっていなければアニメーションを止める。
-----------------

という文にするには「else」を使います。
以下を参考にして書き換えてみてください。

if (t is Mychar) {
  //tが自機である
  
  if (crashTo(t)) {
    //tに当たっている

  } else {
    //tに当たっていない

  }
  
}


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/08/31(Wed) 20:01 No.13180
 
extends SpriteChar;
a=newAnimation();
while (y<$screenHeight) {
  
  for (t in $chars) {
    if (t is Mychar) {
  //tが自機である
  if (crashTo(t)) {
    //tに当たっている
      $Mychar.vy=-7; // 自機がはねあがる
a.swing($Pat_maze+8,$Pat_maze+10,9.4);
 } else {
        a.pause();      //tに当たっていない
  }
}
  
}
  update();
}
としてみましたが、アニメーションを無視してしまいます。どうすればいいでしょうか。

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/08/31(Wed) 20:53 No.13188
 
  if (crashTo(t)) {
    //tに当たっている
      $Mychar.vy=-7; // 自機がはねあがる
      a.swing($Pat_maze+8,$Pat_maze+10,9.4);
      anims = 1;  // アニメーションしているフラグ
  } else {
      //tに当たっていない
      if (p==$Pat_maze+8) {  // 最初の画像であれば
        // animsが1 → アニメーションが始まったばかり(ここでpauseするとアニメーションしなくなる)
        // animsが0 → アニメーションした後
        if (anims==0) {
          a.pause();p=$Pat_maze+8;
        }
      } else {
        // 画像が変わったらanimsを0に
        anims = 0;
      }
  }


すぐにpauseを呼び出してしまうとアニメーションしないので、
「画像が変わってから元の画像に戻ったら止める」というプログラムにしました。
ちょっと難しいですが・・・


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/01(Thu) 16:44 No.13192
 
やばいです。今度は自機自体が居なくなってしまいました。なぜでしょうか。

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/01(Thu) 19:50 No.13197
 
まずはデバッグです。
ジャンプ台に乗る前に自機をマウスでクリックしてください。
そして、xとyとpとdiedの変数の内容に注目します。
pが0未満である場合はアニメーション関係でミスってる可能性が高いです。xやyが画面外や0未満である場合は自機のジャンプ関連のプログラムが間違っている可能性があります。diedが1になってる場合はどこかにdie();または$Mychar.die();が入ってないか調べてみて下さい。


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/01(Thu) 20:46 No.13200
 
消えたのは実行直後で自機がどっかに消えてしまいます。

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : ぐりーんげーむ。(p1186-ipngn808hodogaya.kanagawa.ocn.ne.jp)
- 2011/09/01(Thu) 22:33 No.13205
 

print関数が役に立ちます。

自機のプログラムのupdate();の直前に

print("-------------------");
print("自機のX "  + x);
print("自機のY "  + y);
print("自機のVX " + vx);
print("自機のVY " + vy);
print("自機のp "  + $pat_もとの自機の絵);
print("今のp "    + p);

自機のプログラムの最後に

function onDie() {print("死んだ");}

とかいれて実行してみてください。
左のコンソールに表示されるはずです。
-------------------------------------------
「死んだ」と表示されたら、自機が死んでいます。

1つ目の値がおかしい場合、xに問題があります。
2つ目の値がおかしい場合、yに問題があります。
3つ目の値がおかしい場合、vxに問題があります。
4つ目の値がおかしい場合、vyに問題があります。

5つ目と6つ目の値がずれている場合、pに問題があります。
-------------------------------------------


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/02(Fri) 17:24 No.13209
 
できません。やっぱりジャンプ台はできないのでしょうか?

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/02(Fri) 20:27 No.13219
 
何がわかりませんか?


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/02(Fri) 20:30 No.13220
 
  if (crashTo(t)) {
    //tに当たっている
      $Mychar.vy=-7; // 自機がはねあがる
      a.swing($Pat_maze+8,$Pat_maze+10,9.4);
      anims = 1;  // アニメーションしているフラグ
  } else {
      //tに当たっていない
      if (p==$Pat_maze+8) {  // 最初の画像であれば
        // animsが1 → アニメーションが始まったばかり(ここでpauseするとアニメーションしなくなる)
        // animsが0 → アニメーションした後
        if (anims==0) {
          a.pause();p=$Pat_maze+8;
        }
      } else {
        // 画像が変わったらanimsを0に
        anims = 0;
      }
  }
のプログラムを使うと自機が死ぬし、かといって前のプログラムを使うとアニメーションが止まらないし…
どうすれば成功するのでしょうか?

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/02(Fri) 20:57 No.13223
 
dieがどこかに入ってない限りいきなり死ぬことはまずありえません。どこかにdie()または$Mychar.die()は入ってないでしょうか?
ジャンプ台のソースに入ってないとすると、もしかしたら死亡ではないかもしれません。onDie()またはonUpdate()の中にprint関数を使ってxやyを出力してみて下さい。


Re: ジャンプ台 投稿者 : ぐりーんげーむ。(p1186-ipngn808hodogaya.kanagawa.ocn.ne.jp)
- 2011/09/03(Sat) 13:58 No.13230
 
成功するにはまず、失敗を学ぶこと。

>自機が死ぬし

コンソールに「死んだ」と表示されたのですね。
自機が死んでいるということは、dieが呼ばれた
もしくはプログラムの最後までいったということになります。

まず原因を特定するために以下のことをしてください。

1.tonyuのプログラムを編集する画面の上にある検索で
「$Mychar.die();」と$Mychar内の「die();」を調べ、
そのすぐ手前に「print("dieを呼ぶ");」を入れてください。

2.自機のwhile(なんたら)をwhile(1)にしてください。

3.実行し、自機が消えたら停止してください。

4.コンソール画面に表示されている文字を書き込んでください。

おそらくこれで大まかな原因が特定できるはずです。
こうやってミスを追い詰めていくのがプログラミングの醍醐味なんですけどね!!(違うかも


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 06:50 No.13233
 
死ぬというより、どこかに消え去ったという方が近いです。オブジェインスペクタを見てみたら-1000ぐらい行ってました。なぜそこまで吹っ飛ぶのでしょうか?

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 12:55 No.13234
 
どの変数が-1000までいきましたか?


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 13:37 No.13241
 
y方向です。
かなり上に吹っ飛んでることがわかります。

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/04(Sun) 14:31 No.13245
 
先ほどのプログラムで
$Mychar.vy=-7;
となってるところを
t.vy=-7;
に直してみてください。
(修正忘れてました・・・)


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 14:53 No.13247
 
今度は乗れなくなってしまいました…
なぜ乗れなくなったのでしょうか?

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 15:27 No.13249
 
あまり人に頼りすぎるといざという時に何もできなくなります。プログラム覚えはまず改造から。

乗れないということは、おそらくtがMycharを指してないです。
print(t);などをfor(t in $chars){の下に入れて出てくるものを確認してみて下さい。


Re: ジャンプ台 投稿者 : S.Percentage(p39206-ipngn1002souka.saitama.ocn.ne.jp)
- 2011/09/04(Sun) 15:33 No.13250
 
その前に、乗れなくなったってことはジャンプ台と自機が重なってるという解釈であってますか?


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 16:12 No.13252
 
はい、そのとおりです。乗ろうとするとすり抜けてしまいます。

推薦記事: ジャンプ台


Re: ジャンプ台 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 16:15 No.13253
 
できました!!プログラムの一番最初で
t=$Mychar;
と指定するとできるようになりました!
でも、アニメーションの速度が変わらないのが欠点ですが…自己解決します。

推薦記事: ジャンプ台

時限爆弾 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/08/31(Wed) 11:09 No.13160
 


今度は、爆弾に、一定時間がたつと爆発するような装備をつけたいと思ってます。ですが、僕はまだtonyu初心者で、爆弾が作れたのは命令リファレンスから、引っ張り出して、それを組み合わせただけです。本題ですが、どうすれば、時限爆弾になるのでしょうか。僕の望みは、5〜3秒です。お願いします。


Re: 時限爆弾 投稿者 : ぐりーんげーむ。(p1186-ipngn808hodogaya.kanagawa.ocn.ne.jp)
- 2011/08/31(Wed) 17:38 No.13173
 

爆弾が作れたということは、爆発はできているものとします。

時間については、
tonyuは基本的に1秒間に60回、update()を行います。

つまり

time=0;
while(1) {
  time++;
  update();
}

とすると、一秒後にtimeには60という数字が入り、
三秒後には180、五秒後には300になります。
これを利用してください。


Re: 時限爆弾 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/08/31(Wed) 20:12 No.13181
 

extends SpriteChar;
p=$pat_Sample6+26;
time=300;
while(1) {
      if ($map.getAt(x,y+10 )==$pat_Maze+1) y+=3;
            if ($map.getAt(x,y+10 )==$pat_Maze+2) y+=3;
            
  for (t in $chars) {
    if ( t is Enemy && crashTo(t) ) {
      appear(new Bomb2(x, y, $pat_Sample6+4));
       die();
    }
  } 
update();  
}
//$Bomにこのオブジェクトを入れる
function onUpdate() {$Bom = this;}

//$Bomをリセットする
function onDie() {$Bom = 0;}
この中のどの辺に入れればいいですか?いろいろな場所に入れてみましたが、全然できませんでした。

推薦記事: ジャンプ台


Re: 時限爆弾 投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/08/31(Wed) 20:32 No.13185
 
while文の中(update();の直前が良い)に次の文を入れれば5秒後に消えてくれます。

  time --;  // time値を減らす
  if (time<=0) die();  // 0以下になれば消滅させる


Re: 時限爆弾 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/02(Fri) 17:18 No.13208
 
Download:13208.zip 13208.zip 今度は、3秒前になると、3,2,1とカウントダウンをさせたいです。プログラムはこれでいいでしょうか?画像も添付させています。

推薦記事: ジャンプ台


Re: 時限爆弾 投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/02(Fri) 18:31 No.13210
 
17行目の
appear(new Bomb2(x , y ,$pat_Bomb+0));
はonDie()でも呼ばれるので不要です。

またこのままだとカウント0が表示されない様なので、最後のp=p+1;の後ろにwait(60);を追加するべきでしょう。


Re: 時限爆弾 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/02(Fri) 18:36 No.13212
 
爆弾が、0になった時に、爆発するようにしたいです。同時に、コントロールキーを押している間だけ、持てるようにしたいです。どうすればいいでしょうか?

推薦記事: ジャンプ台


Re: 時限爆弾 投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/02(Fri) 18:47 No.13217
 
>0になった時に、爆発

先ほどのプログラムで、onDie()が2回定義されてしまってるので、最初の定期が消されて爆発しないようです。
3〜5行目のOndie()の定義を消して、30行目のonDie()にまとめて

function onDie() {
  appear(new Bomb2(x , y ,$pat_Bomb+0));
  $Bom = 0;
}

とすれば爆発オブジェクトが生成されると思います。


>コントロールキーを押している間だけ、持てるようにしたい

Ctrlキーを押してる時に、爆弾が自機と当たっていると、爆弾が自機の上に移動するようにすればそれっぽいのができるはず。


Re: 時限爆弾 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/02(Fri) 20:39 No.13221
 
Download:13221.zip 13221.zip カウントダウンですが、残り3秒前になるとカウントダウンが始まるようにしたいです。HAVAは、    for( t in $Chars ){
      if( t is Mychar ){
      f=t.f;  // 向きを自機の逆向きにする
      if(getkey(17)>0){
      if (f==1) x=t.x+30;  // 前を向いている方向に盾が行く
      else      x=t.x-30;  // 逆の位置に付いてしまう場合は、+と-を入れ替える
      y=t.y;
    }
        if ($map.getAt(x,y+10 )==$pat_Maze+1) y+=3;
    }
  }
}
を使っているんですが、触れてないときにコントロールキーを押すと、自機の前に瞬間移動してしまいます。あと、0になった時に、空中に浮いてしまいます。どうすればいいでしょうか?

推薦記事: ジャンプ台


Re: 時限爆弾 投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/02(Fri) 20:58 No.13225
 
Download:13225.txt 13225.txt
>触れてないときにコントロールキーを押すと、自機の前に瞬間移動してしまいます
触れているかどうかを判定させるためにcrashTo()を使います。

>あと、0になった時に、空中に浮いてしまいます
wait()を入れるとその間は実行されないので、止まったままになってしまいます。

>残り3秒前になるとカウントダウンが始まるようにしたいです
カウントダウンは、timeによって画像を変更するようにすればいいです。
(以前のはwaitを使用しましたが、↑の理由により使わないほうが良いでしょう)

あと、またonDieが重複定義されているので修正しました。

以上を修正したのが添付ファイルです。未確認ですが・・・


Re: 時限爆弾 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/03(Sat) 07:33 No.13227
 
自機に触れてない時に勝手に向きが変わるのは仕方ないですが、使うことはできました。自機に爆風の判定を入れてよりリアルなようにしています。

推薦記事: ジャンプ台


Re: 時限爆弾 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/03(Sat) 07:34 No.13228
 
自機に触れてない時に勝手に向きが変わるのは仕方ないですが、使うことはできました。自機に爆風の判定を入れてよりリアルなようにしています。

推薦記事: ジャンプ台


Re: 時限爆弾 投稿者 : OceanLight(kd113159211158.ppp-bb.dion.ne.jp)
- 2011/09/03(Sat) 18:51 No.13231
 
>自機に触れてない時に勝手に向きが変わる
先ほどのプログラムにミスがありましたね・・・

        if(crashto(t) && getkey(17)>0){
          f=t.f;  // 向きを自機に合わせる
          if (f==1) x=t.x+24;  // 前を向いている方向に盾が行く
          else      x=t.x-24;  // 逆の位置に付いてしまう場合は、+と-を入れ替える
          y=t.y;
        }

と訂正しておきます。


Re: 時限爆弾 投稿者 : おへっほー(ntsitm068116.sitm.nt.ftth.ppp.infoweb.ne.jp)
- 2011/09/04(Sun) 13:39 No.13242
 
今度はなぜかつかめません。おかしいです。しかも触れているときに自分のパターンを反転すると爆弾のパターが反転してしまいます。どうすれば正しくできますか?

推薦記事: ジャンプ台

.
[直接移動] [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] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208] [209] [210] [211] [212] [213] [214] [215] [216] [217] [218] [219] [220] [221] [222] [223] [224] [225] [226] [227] [228] [229] [230] [231] [232] [233] [234] [235] [236] [237] [238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256] [257] [258] [259] [260] [261] [262] [263] [264] [265] [266] [267] [268] [269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288] [289] [290] [291] [292] [293] [294] [295] [296] [297] [298] [299] [300] [301] [302] [303] [304] [305] [306] [307] [308] [309] [310] [311] [312] [313] [314] [315] [316] [317] [318] [319] [320] [321] [322] [323] [324] [325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340] [341] [342] [343] [344] [345] [346] [347] [348] [349] [350] [351] [352] [353] [354] [355] [356] [357] [358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391] [392] [393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436] [437] [438] [439] [440] [441] [442] [443] [444] [445] [446] [447] [448] [449] [450] [451] [452] [453] [454] [455] [456] [457] [458] [459] [460] [461] [462] [463] [464] [465] [466] [467] [468] [469] [470] [471] [472] [473] [474] [475] [476] [477] [478] [479] [480] [481] [482] [483] [484] [485] [486] [487] [488] [489] [490] [491] [492] [493] [494] [495] [496] [497] [498] [499] [500] [501] [502] [503] [504] [505] [506] [507] [508] [509] [510] [511] [512] [513] [514] [515] [516] [517] [518] [519] [520] [521] [522] [523] [524] [525] [526] [527] [528] [529] [530] [531] [532] [533] [534] [535] [536] [537] [538] [539] [540] [541] [542] [543] [544] [545] [546] [547] [548] [549] [550] [551] [552] [553] [554] [555] [556] [557] [558] [559] [560] [561] [562] [563] [564] [565] [566] [567] [568] [569] [570] [571] [572]
- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

- Joyful Note -