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

おなまえ

Eメール
題  名  
コメント(http(s)://などのURLが含まれていると投稿できないことがあります)
添付プログラム
※プログラムに関する質問は、そのプログラムを添付して送ると対応が早くできます
添付方法...
削除キー (自分の記事を削除時に使用。英数字で8文字以内)
文字色
ボ○バーマン風アクションゲーム 投稿者 : ミウタカ(p18212-adsao02sappo2-acca.hokkaido.ocn.ne.jp)
- 2004/07/10(Sat) 06:57 No.6564
  HomePage


Download:6564.zip 6564.zip 久しぶりです。
現在、ボ○バーマン風味のアクションを作成しています。
基本的システム(爆弾、敵など)も完成し、現在、アイテムを作成中です。
今回迷っているのは貫通爆弾です。(ボ○バーマンにかなり似ているので説明は省略)
火力がステータス上で2以上であったら中心と先端の間に中間の棒線状の爆発が入ります。しかし、その中間の爆発が、ブロックに当たっても爆破できません。
また、火力が1の時(先端と中心の爆発のみ)の状態ではブロックの破壊さえ出来ません。そこで、爆破できるようにしているのですが、自己解決できません。
そこで、解決方法を皆様方に教えていただきたいと思います。

問題であるプログラムは添付致しました。
貫通爆弾の爆発のクラスは、bomb_fireC_kantsu.tonyu(中心), bomb_fireM_kantsu.tonyu(先端、中間)です。

何回も使うようなパターン名は、グローバル変数化しましたので、下記をご覧下さい。
$wall=$pat_maze+0;//壁
$bomm=$pat_maze+3;//爆弾
$space=$pat_maze+1;//空白
$block=$pat_maze+2;//ブロック
$bup=$pat_bomb+5;//ここからうえ、した、みぎ、ひだりの真ん中
$bdo=$pat_bomb+3;
$bri=$pat_bomb+7;
$ble=$pat_bomb+1;
$blup=$pat_bomb+4;//ここからうえ、した、みぎ、ひだりのはじっこ
$bldo=$pat_bomb+2;
$blri=$pat_bomb+6;
$blle=$pat_bomb+0;
$bC=$pat_bomb+8;//中央
$maxbom=1;//ボム数


Re: ボ○バーマン風アクションゲーム 投稿者 : ミウタカ(p18212-adsao02sappo2-acca.hokkaido.ocn.ne.jp)
- 2004/07/11(Sun) 08:04 No.6579
 
Download:6579.zip 6579.zip 先程述べた説明ではうまく書き表せないので、ゲーム中でのバグ発生時のスクリーンショットを添付致しました。
(zip形式なので解凍してください)
画像を見ればどんなバグかお分かりになると思います。


Re: ボ○バーマン風アクションゲーム 投稿者 : N(actkyo055093.adsl.ppp.infoweb.ne.jp)
- 2004/07/12(Mon) 17:55 No.6594
 
クラス bomb_fireC_kantsu内の

 if($map.getat(x,y+32)!=$wall){

というような文がいくつかありますが、その後にブロックを消す処理が入っていないのが原因だと思います。実際に付け足したところ、正常に動作しました。


Re: ボ○バーマン風アクションゲーム 投稿者 : ミウタカ(p18212-adsao02sappo2-acca.hokkaido.ocn.ne.jp)
- 2004/07/15(Thu) 05:23 No.6619
 
遅れていて済みませんでした。Nさんの指示通りに修正したら直りました。火力がどれであろうと問題はありません。

教えてください。 投稿者 : コチャニ(p2142-ipad02otsu.shiga.ocn.ne.jp)
- 2004/07/14(Wed) 17:50 No.6614
 


誰か僕に教えてください。
それは、
ゲームなどのタイムやデータなどを記録するのは
どうプログラムをしたらいいのか教えてください。
よろしいのですか?


Re: 教えてください。 投稿者 : hkr(gta.kinet-tv.ne.jp)
- 2004/07/14(Wed) 17:57 No.6615
 
ファイルの読み書きをすればよいです。ヘルプの
C:\Program Files\Tonyu\help\html\FileReader.htmlと
C:\Program Files\Tonyu\help\html\FileWriter.htmlを
みてたらわかるとおもいます。


記録 投稿者 : nuntora(210-20-67-194.home.ne.jp)
- 2004/07/15(Thu) 00:13 No.6617
 
 ゲームのタイムと言われてもまだまだ抽象的です。もう少し具体的な内容を挙げていただきたいと思います。
 予想するにhkrさんと同じくファイルへの書き込みと思いますが、場合によってはフレームカウントで済んでしまうことも考えられます。

 ファイルの書き込み方法は
http://tonyu.kake.info.waseda.ac.jp/api/wiki.cgi?page=%a5%d5%a5%a1%a5%a4%a5%eb%a4%ce%b0%b7%a4%a4%a4%cb%a4%c4%a4%a4%a4%c6
 を参考にしてみてください。

 またフレームカウントとは、一回の繰り返しに対してカウントしてゆく変数のことを指します。
----------------------------------------
extends SpriteChar;

i=0;
while(1){
  i=i+1;
  update();
}
----------------------------------------
のようにして使用してください。これにより、一回の描画に関してiという変数が増えてゆきます。

 また最後に、質問される際にはある程度質問Formatに沿った形でお願いします。
http://tonyu.kake.info.waseda.ac.jp/api/wiki.cgi?page=%bc%c1%cc%e4%a5%d5%a5%a9%a1%bc%a5%de%a5%c3%a5%c8
 ご理解とご協力のほどをよろしくお願いします。

不在のお知らせ 投稿者 : hoge-(210-20-66-85.home.ne.jp)
- 2004/07/14(Wed) 16:03 No.6612
 


20日まで、ここの掲示板に訪れることができません

ご迷惑をおかけしますが、よろしくお願いします。

ブロック崩し 投稿者 : 海ンちゅー(tsechttp05.sec.ppp.nifty.com)
- 2004/07/13(Tue) 22:41 No.6608
 


Download:6608.lzh 6608.lzh
ブロック崩しでブロックを貫通させようとしてるがなかなかうまくいきません。

// あたり判定: xx,yyが壁やブロックだったら、そのキャラクタパターンを返す
function getAt(xx,yy) {
  var r,w;
  mx=trunc((xx-vy)/16);
  my=trunc((yy+vx)/16);
  r=$map.get(mx,my);
  if (r!=$pat_block+0) {
    return r;
  }
  mx=trunc((xx+vy)/16);
  my=trunc((yy-vx)/16);
  r=$map.get(mx,my);
  return r;
}

// ボールの数を検査
function onUpdate() {
  $ballC+=1;         


life=5;
survive=1;
while(survive) {
  // ボールが完全に下に落下するまでは survive=1
  while(life>0 && y+vy<$screenHeight-3){
    if (crashTo($Racket)) {
      // ラケットに衝突したとき
      if (vy>0) $mplayer.play($se_racket);
      od=dist(vx,vy); // ボールの速さ
      vy=-cos((x-$Racket.x)*2)*od;
      vx=sin((x-$Racket.x)*2)*od;  // 飛んでいく向き。ボールとラケットのx座標の差による
    }
    pa=getAt(x+vx,y+vy); // これから移動する先にあるマップパターンを読む
    if (pa!=$pat_block+0 ) {
      // 空間以外(壁やブロック)だったら
      mmx=mx;mmy=my;
      life-=1;
      // 跳ね返り
      if (getAt(x-vx,y+vy)==$pat_block+0) vx=-vx;
      else if (getAt(x+vx,y-vy)==$pat_block+0) vy=-vy;
      else {vx=-vx;vy=-vy;}  
      // ブロックだったら
      if (pa<$pat_block+9) {
        np=$pat_block;
        if (pa==$pat_block+2) {
以下略・・・

上の
    if (pa!=$pat_block+0 ) { を    if (pa<$pat_block+9 ) { にするといきなしステージクリアになったりします。
どうすればブロックが貫通するんでしょう。
だれか教えてください。ファイル送ります。


Re: ブロック崩し 投稿者 : bluesnow(i137107.ap.plala.or.jp)
- 2004/07/14(Wed) 11:07 No.6610
 
pa=getAt(x+vx,y+vy); // これから移動する先にあるマップパターンを読む
if (pa!=$pat_block+0 ) { // 空間以外(壁やブロック)だったら

  if( pa == $pat_block+9 ){ // 壁のときだけ
    //跳ね返り
  }
  if (pa < $pat_block+9) { // ブロックだったら
  }
}


大雑把にこんなかんじでしょうか。
黄色ブロックにぶつかるとはねかえりますが、貫通する=壁とラケット以外では跳ね返らない
なので、跳ね返るところを囲いました。


>if (pa!=$pat_block+0 ) { を    if (pa<$pat_block+9 ) {
>にするといきなしステージクリアになったりします。
は、たとえばボールが空間にいるとき
pa = $pat_block+0で
// ブロックだったら
if (pa < $pat_block+9 ){ // 条件をみたすので中に入る
  if (pa==$pat_block+2) { 
  } else { // 空間は黄色ではないので中に入る
    // 黄色でなければ、ブロックの数をへらす
  }
}
となってブロック数が一瞬で減っていくと思います。
stage3だとステージクリアにならないのが何故かまでは調べてません


Re: ブロック崩し 投稿者 : 海ンちゅー(tsechttp05.sec.ppp.nifty.com)
- 2004/07/14(Wed) 15:22 No.6611
 
お!おかげで貫通しました!
ありがとうございます!

>黄色ブロックにぶつかるとはねかえりますが、
硬いので跳ね返るようにしたのです。

円移動 投稿者 : masa(ed101.AFL36.vectant.ne.jp)
- 2004/07/11(Sun) 11:34 No.6582
 


また質問します。
カーソルキー左右で$enを中心に円形に移動し、
上下でたてに移動するプログラムを作ろうとして
extends SpriteChar;
angle=270;
ty=y;
while(1){
  if(x>$en.x-128&&x<$en.x+128&&y>$en.y-128&&x<$en.y+96){zOrder=-1;}else{zOrder=30;}
  if(getkey(38)==0&&getkey(40)==0)x=$en.x+(dist(x-$en.x,y-$en.y))*cos(angle);
  if(getkey(38)==0&&getkey(40)==0)y=$en.y+(dist(x-$en.x,y-$en.y))*sin(angle);
  if(getkey(37))angle+=1;
  if(getkey(39))angle-=1;
  if(angle>360)angle=0;
  if(angle<0)angle=360;
  if(getkey(38))y=y+0.5;
  if(getkey(40))y=y-0.5;
  update();
update();}
としたのですが、
こうするとたてに移動した後に位置がかわってしまいます。
どうすればよいでしょうか?


Re: 円移動 投稿者 : N(actkyo055141.adsl.ppp.infoweb.ne.jp)
- 2004/07/11(Sun) 15:54 No.6585
 
左右で旋回、上下で距離を決めるのでしょうか?
それなら、以下のようにすればよいでしょう。

angle=270;
r=50;
while(1){
  if(x>$en.x-128&&x<$en.x+128&&y>$en.y-128&&x<$en.y+96){zOrder=-1;}else{zOrder=30;}
  if(getkey(37))angle+=1;
  if(getkey(39))angle-=1;
  if(angle>360)angle=0;
  if(angle<0)angle=360;
  if(getkey(38))r=r+0.5;
  if(getkey(40))r=r-0.5;
  x=$en.x+r*cos(angle);
  y=$en.y+r*sin(angle);
  
  update();
}

やりたいこと、違っていたらすみません。。。


Re: 円移動 投稿者 : masa(ed131.AFL40.vectant.ne.jp)
- 2004/07/11(Sun) 20:07 No.6588
 
説明不足でした。
上下を押すと、円に関係なく真上、真下に動くようにしたいのですが、自分の方法だと真ん中に吸い寄せられる形になってしまいます。
y+=0.5;
などとやっても真ん中に吸い寄せられてしまいます。
どうしてなのでしょうか?


Re: 円移動 投稿者 : bluesnow(i137107.ap.plala.or.jp)
- 2004/07/11(Sun) 20:28 No.6589
 
if(getkey(38)==0&&getkey(40)==0)x=$en.x+(dist(x-$en.x,y-$en.y))*cos(angle);
if(getkey(38)==0&&getkey(40)==0)y=$en.y+(dist(x-$en.x,y-$en.y))*sin(angle);

ここでangleが修正されていないのが問題だと思われます。
angleメソッドをつかってangle(x-$en.x,y-$en.y)でしょうか。

精度に不満があればアップロード板からRyotaさんの円関数を参照してください


Re: 円移動 投稿者 : masa(ed191.AFL10.vectant.ne.jp)
- 2004/07/12(Mon) 22:37 No.6603
 
えーっと、angleメソッドというものをどうつかえばよいのでしょうか?
angle=angle(x-$en.x,y-$en.y)のようにしたのですがうまくいきません。


Re: 円移動 投稿者 : bluesnow(i137107.ap.plala.or.jp)
- 2004/07/12(Mon) 23:41 No.6604
 
angleメソッドの使い方はヘルプをご覧下さい。
http://tonyu.kake.info.waseda.ac.jp/api/wiki.cgi?page=angle


前回のは失敗みたいです ごめんなさいm(__)m
この移動は値を修正するタイミングが面倒なので以下のようになります。
上下移動の時と回転の時は切り離します。

extends SpriteChar;

angle = 270;                // 角度
r     = 100;                // 半径
x = $en.x + r * cos(angle); // 角度と半径から最初の位置を計算
y = $en.y + r * sin(angle);
while(1){
  if(x>$en.x-128&&x<$en.x+128&&y>$en.y-128&&x<$en.y+96){zOrder=-1;}else{zOrder=30;}

  if( getkey(38) ) y += 0.5;
  if( getkey(40) ) y -= 0.5;
  if( getkey(38) || getkey(40) ){    // y座標が変化したとき
    r     = dist ($en.x-x, $en.y-y); // 半径を修正
    angle = angle(x-$en.x, y-$en.y); // 角度を修正
  }
  
  if( getkey(37) ) angle += 1;
  if( getkey(39) ) angle -= 1;
  if( getkey(37) || getkey(39) ){ // 角度が変化したとき
    if(angle <   0) angle += 360;
    if(angle > 360) angle -= 360;
    x = $en.x + r * cos(angle);   // x座標を修正
    y = $en.y + r * sin(angle);   // y座標を修正
  }
    
  update();
}

angleの精度をあげたい場合は下を貼り付けてください
http://tonyu.kake.info.waseda.ac.jp/uploadcenter/joyful.cgi?mode=res&no=2503


Re: 円移動 投稿者 : masa(ed201.AFL39.vectant.ne.jp)
- 2004/07/13(Tue) 22:27 No.6607
 
おお!完璧に動くようになりました。
本当に感謝です。

.
[直接移動] [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]
- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

- Joyful Note -