質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.54%

  • Java

    15532questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • ActionScript 3

    51questions

    ActionScript 3 (AS3)はAdobe FrashとAIRプラットフォームによる、オープンソースかつオブジェクト指向のプログラミング言語です。AS3はRIA、モバイルアプリケーション、デスクトップアプリケーションなど広く使われます。

条件分岐?

受付中

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 468

xof3413

score 2

ActionScript3でゲームを作っています。

「Aの値が50減ったらら、Bの値を1減らす」というような処理を作りたいのですがどうすればいいかわかりません。

もう少し詳しく説明すると、

int型の変数Aの初期値は300です。
int型の変数Bの初期値は6です。
ゲーム内にはボタンがあり、
一度押すごとに変数Aの値を25引いていくボタン(btn_0)と
一度押すごとに変数Aの値を50引いていくボタン(btn_1)と
一度押すごとに変数Aの値を100引いていくボタン(btn_2)があります。

ボタンを押して引き算の処理をした時、変数Aから引かれた値が50であれば変数Bの値から1を引く(100であれば2,25であれば0)という事です。

自分は条件分岐で出来るのかなと思っているのですが、もしそれよりも正しい方法などあったら、ご指摘頂きたいです。

以下途中まで考えたスクリプトです。

//変数宣言
var A:int = 300;
var B:int = 6;

//条件分岐
if(ここが分からない){
B -= 1;
}

//ボタン設定
btn_0.addEventListener(MouseEvent.CLICK, A);
function A(e: MouseEvent): void {

A -= 25;
}

btn_1.addEventListener(MouseEvent.CLICK, B);
function B(e: MouseEvent): void {

A -= 50;
}

btn_2.addEventListener(MouseEvent.CLICK, C);
function C(e: MouseEvent): void {

A -= 100;
}

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • cateye

    2017/01/30 19:46

    「Aの値が50減ったら、Bの値を1減らす」と言うのと、「変数Aから引かれた値が50であれば変数Bの値から1を引く(100であれば2,25であれば0)」とでは視点が違います・・・25を2回引いたらー1にはならないのですか?

    キャンセル

  • xof3413

    2017/01/30 21:34

    おっしゃる通りですね…。25は0ではなく正しくは0.5ですが、あくまでも50の倍数減っていくとその値に応じた値をBから引くというイメージです…。

    キャンセル

回答 4

0

こういうのは考え方を変える必要があります。

「Aの値が50減ったらら、Bの値を1減らす」とありますね。

この「Aの値が50減ったら」の条件文がわからない。と。

であれば、考え方を変えてみましょう。

"50減ったらと" とありますが、どのようにして考えます?

普通は " 全体から 差し引いた値 が 50 以上 " ですよね?

なので、

"全体から差し引いた値"

"その値が 50 以上"

を分けて考えて見ましょう。

(最終的にはひとつになりますが、考えやすくするために分割します。)

全体から... の部分は

全体 - 現在の値

としますか。

で、その式を C とします ( calc の略 )。

C が 50 以上 ( 50を含む )

だと

C >= 50

となりますね。

なので、

元に戻して

全体 - 現在の値 >= 50

です。これを変数とかデータに書き換えると完成です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

‐25が2回でも‐50と同じ扱いでBを1減らすなら、Bは要するにAが50区切り(切り上げ)で何個分かということではないですか?
であれば、Aを操作した後の計算を次のような計算で代替できませんか?

B = A / 50 + (A % 50 != 0) ? 1 : 0;

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

Aから引かれた値」に対してBが減少する場合、引かれた値に対して引き算するのが1番分かりやすいです。

btn_0.addEventListener(MouseEvent.CLICK, A); 
function A(e: MouseEvent): void {
    A -= 25;
}

btn_1.addEventListener(MouseEvent.CLICK, B); 
function B(e: MouseEvent): void {
    A -= 50;
    B -= 1;
}

btn_2.addEventListener(MouseEvent.CLICK, C); 
function C(e: MouseEvent): void {
    A -= 100;
    B -= 2;
}

Aの値」に対してBの値が決まるなら、swordoneさんの回答が参考になります。

btn_0.addEventListener(MouseEvent.CLICK, A); 
function A(e: MouseEvent): void {
    A -= 25;
    B = calculateB();
}

btn_1.addEventListener(MouseEvent.CLICK, B); 
function B(e: MouseEvent): void {
    A -= 50;
    B = calculateB();
}

btn_2.addEventListener(MouseEvent.CLICK, C); 
function C(e: MouseEvent): void {
    A -= 100;
    B = calculateB();
}

function calculateB() : int {
    return A / 50 +
        (A % 50 != 0) ? 1 : 0;
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

mod(%)を使ってはいかがですか?
A % 50 == 0
ならBを1減らす
なお、Aの初期値が50で割り切れてしまうので、初期値を除外するか、Bの初期値を1多くしておく対処が必要ですが

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Java

    15532questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • ActionScript 3

    51questions

    ActionScript 3 (AS3)はAdobe FrashとAIRプラットフォームによる、オープンソースかつオブジェクト指向のプログラミング言語です。AS3はRIA、モバイルアプリケーション、デスクトップアプリケーションなど広く使われます。