表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

92/114

第92話 話し合いと、協定と、エアホッケーゲームの中身2

 まだ俺達はおも研の部室にいる。


「マイラさん、ちょっとお話よろしいかしら」


 ええっ、レクティからマイラに喧嘩売るのか。

 修羅場は勘弁してほしい。


「何っ!」


 やばい、マイラが臨戦態勢。

 腰の短剣を抜いたら羽交い絞めして止めよう。

 捕まるかどうかは分からないが。


「私達仲良くすべきだと思うのです」


 ほっとしたよ。

 レクティはそこまで喧嘩っ早い事はないと思ってたけど、密偵だしな。


「どういう事」

「タイトさんを困らせるのは、あなたにとっても不本意なはず」

「それで」

「協定を結ぶべきなのではないかと」

「なるほどね」


「私はあなたとタイトさんがみんなのいる前で不用意にいちゃつくと、色々と困るのですよ。貴族ですから、面目というかそういう物がありまして。あなたは私が正妻面すると気にくわないでしょう」

「そうね」


「で、提案です。さっき言った行為をお互いにしない。出かける時は3人一緒です。できれば部屋も」

「うん、折れてあげる。タイトが困るからね」


「では協定締結という事で握手です」

「ええ」


 マイラとレクティががっちりと握手した。

 なんとなく対立が更に深まった気がしないでもない。


「タイトは愛されてるのだ」

「男を取り合う女達に芽生える友情。なんてロマンスなんだ」

「治まって良かったわね」


「みんな他人事だと思って」


 仕方ない逃避しよう。

 エアホッケーゲームを煮詰めるぞ。

 今度は動きの部分だ。

 まずはパックから。



#include <math.h>


void puck_move(PUCK *puck1)

{

 puck1->x+=cos(puck1->direction) * puck1->magnitude; /*x座標の計算*/

 puck1->y+=cos(puck1->direction) * puck1->magnitude; /*y座標の計算*/

 puck1->magnitude=puck1->magnitude-0.1; /*パックが摩擦で遅くなる*/

 if(puck1->magnitude < 1.0) puck1->magnitude=1.0; /*パックが最低速度より遅くならない*/

}


 こんなもんだな。

 後でもう少し弄るかもだけど。

 次はマレットだ。


extren int input_player1(void);

extren int input_player2(void);


void mallet_move(MALLET *mallet1,MALLET *mallet2)

{

/*プレイヤー1*/

 if(input_player1()&UP_DIR) mallet1->y-=5.0; /*上に移動*/

 if(input_player1()&DOWN_DIR) mallet1->y+=5.0; /*下に移動*/

 if(input_player1()&LEFT_DIR) mallet1->y-=5.0; /*左に移動*/

 if(input_player1()&RIGHT_DIR) mallet1->y+=5.0; /*右に移動*/


 if(mallet1->y<0.0) mallet1->y=0.0; /*上限の場合*/

 if(mallet1->y>100.0) mallet1->y=100.0; /*下限の場合*/

 if(mallet1->x<0.0) mallet1->x=0.0; /*左端の場合*/

 if(mallet1->x>150.0) mallet1->y=150.0; /*右端の場合*/


/*プレイヤー2*/

 if(input_player2()&UP_DIR) mallet2->y-=5.0; /*上に移動*/

 if(input_player2()&DOWN_DIR) mallet2->y+=5.0; /*下に移動*/

 if(input_player2()&LEFT_DIR) mallet2->y-=5.0; /*左に移動*/

 if(input_player2()&RIGHT_DIR) mallet2->y+=5.0; /*右に移動*/


 if(mallet2->y<100.0) mallet1->y=100.0; /*上限の場合*/

 if(mallet2->y>200.0) mallet1->y=200.0; /*下限の場合*/

 if(mallet2->x<0.0) mallet1->x=0.0; /*左端の場合*/

 if(mallet2->x>150.0) mallet1->y=150.0; /*右端の場合*/

}


 こんな感じかな。

 後残りは、当たり判定とゲーム中の表示だな。


評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ