teratail header banner
teratail header banner
質問するログイン新規登録

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

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

新規登録して質問してみよう
ただいま回答率
85.30%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

3729閲覧

タップ毎に減少するカウントを0で止めたい

Yukun_flap

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/07/25 13:04

0

0

###タップ毎のカウントを10〜0で止めたい
下記のコードで実行すると0で止まらず -1 -2のように数がマイナスのまま減り続けてしまいます。
タップするたびに数を減少させ、0になるとタップしても数が減らないようにしたいです。
そのような場合、下記のコードをどう修正すればよいでしょうか?

よろしくお願いします。

該当のソースコード

C#

1 2 3 4using System.Collections; 5using System.Collections.Generic; 6using UnityEngine; 7using UnityEngine.UI; 8 9public class Count : MonoBehaviour 10{ 11 public Text tap; 12 private int count; 13 14 void Start() 15 { 16 count = 10; 17 tap.text = count.ToString(); 18 19 } 20 21 public void Button() { 22 count--; 23 tap.text = count.ToString(); 24 } 25 26 } 27 28 29 30 }

試したこと

各サイトを見て試したのですが、エラーやコードが反映されなくて行き詰まっています。
お力添えをお願いします。

補足情報

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

if 文を使うと処理を条件によって分岐させられます。

csharp

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class Count : MonoBehaviour 7{ 8 public Text tap; 9 private int count; 10 11 void Start() 12 { 13 count = 10; 14 tap.text = count.ToString(); 15 } 16 17 public void Button() 18 { 19 count--; 20 // countが0より小さくなったら(=マイナスになったら) 21 // countを0に戻す 22 if (count < 0) 23 { 24 count = 0; 25 } 26 tap.text = count.ToString(); 27 } 28} 29

あるいは数値の下限値を定めて設定するMath.Max関数を使う方法もあります。

(追記)こちらは一旦忘れてください。

csharp

1// 「0」と「count を -1 した結果」のうち、より大きい方の値をcountに代入する 2count = Math.Max(0, count - 1);

コードは思った通りにではなく書いたとおりにしか動かないので、書き方を勉強しないと始まりません。

ひとまずこちらがオススメです。

また、手元に入門者向けの本があると捗ると思うので、お持ちでないようなら何冊か購入を検討してみてください。

投稿2019/07/25 22:51

編集2019/07/29 11:11
tor4kichi

総合スコア773

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yukun_flap

2019/07/29 09:21

Math.Maxを使おうと思ったのですが、どのクラス内に書き込んでもコンパイルエラーが起きてしまいます。 後々、このコードを使うことが多くなるので、if文ではなく、Math.Maxの方が短的で書きやすいと感じたのでどのクラス内に書けば良いのかもう少し教えてもらうと幸いです。よろしくお願いします。
tor4kichi

2019/07/29 10:07

その説明ではどう状況が変わったのかよくわかりませんので、実際に変更したコードとコンパイルエラーを質問に追記するか、ここにコメントしてもらえないでしょうか。
Yukun_flap

2019/07/29 10:36 編集

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Count : MonoBehaviour { public Text tap; private int count; count = Math.Max(0, count - 1); void Start() { count = 10; tap.text = count.ToString(); } public void Button() { count--; tap.text = count.ToString(); } }
Yukun_flap

2019/07/29 10:41

lanvalidOperationException:Cannot start process because a file name has not been provided. System.Diagnostics.Process.Start()(at<0079a30f96a047348857e1cecc6c638a>:0) がコンパイルエラーになります。 よろしくお願いします。
tor4kichi

2019/07/29 11:14 編集

追記ありがとうございます。 回答を修正して動くであろうコードにしましたので参考にしてください。 Math.Maxの方は、まだ学習段階的に早いものを提示してしまったようです。混乱させてしまい申し訳ありませんが、一旦忘れてください。
Yukun_flap

2019/07/29 11:56

試して見たところ、ちゃんと実行できました! ありがとうございます。 まずはif文をきちんと覚えてから学習を展開させていくようにします。 本当にありがとうございました!
tor4kichi

2019/07/29 13:20

????
guest

0

0になったらcount--しなければいいだけでは?

投稿2019/07/25 13:07

gentaro

総合スコア8947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問