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

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

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

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

988閲覧

中カッコが足りない C#

Tomo0225

総合スコア67

C#

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/10/05 10:56

下のコードでコンパイルエラーが多発していて困っています。
特にerror CS1022: Type or namespace definition, or end-of-file expectedというエラーが何個もでています。
どこの中カッコが足りないか教えていただけないでしょうか。
またswhith文の書き方に間違いがないかも教えていただきたいです。
よろしくお願いします。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using BattleScene; 6 7namespace BattleScene.Chara 8{ 9 10 11public class Priest : Player 12{ 13 TextManager textmanager; 14 15 public Priest(object usename) : base(usename){ 16 textmanager = GameObject.Find("battletext").GetComponent<TextManager>(); 17 } 18 19 public override void Attack(Player defender,int turnNumber){ 20 textmanager.battleLog("Priestアタック"); 21 int damage = calcDamage(defender); 22 bool isParise = base.isParise(); 23 if(isParise == true){ 24 textmanager.battleLog(base.playername+"は麻痺した"); 25 }else{ 26 textmanager.battleLog(base.playername+"の攻撃"); 27 priestAttack(defender,turnnumber); 28 } 29 base.attackfinished = true; 30 } 31 32 public void priestAttack(Player defender,int turnNumber){ 33 enum PriestMagic {Heal,Parise,Poison} 34 PriestMagic useMagic = null; 35 if(turnNumber == 1){ 36 if(UnityEngine.Random.Range(0,2) == 1){ 37 useMagic = PriestMagic.Parise; 38 }else{ 39 useMagic = PriestMagic.Poison; 40 } 41 }else if(defender.team == base.team){ 42 useMagic = PriestMagic.Heal; 43 } 44 45 switch(useMagic) 46 { 47 case PriestMagic.Parise : parise(defender); 48 break; 49 case PriestMagic.Poison : poison(defender); 50 break; 51 case PriestMagic.Heal : heal(defender); 52 break; 53 default : base.Attack(defender); 54 } 55 } 56 57 public void parise(Player defender){ 58 defender.abnormality = "parise"; 59 textmanager.battleLog(base.playername+"のパライズ! ➡ "+defender.playername+"は麻痺した"); 60 } 61 62 public void poison(Player defender){ 63 defender.abnormality = "poison"; 64 textmanager.battleLog(base.playername+"のポイズン! ➡ "+defender.playername+"は毒状態になった"); 65 } 66 67 public void heal(Player defender){ 68 textmanager.battleLog(base.playername+"のヒール ➡ "+defender.playername+"のHPを50回復("+defender.hp+"➡"+defender.hp+50+")"); 69 defender.hp = defender.hp+50; 70 base.mp = base.mp-20; 71 } 72} 73 74}

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

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

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

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

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

m.ts10806

2020/10/05 10:59

かっこの対応はかっこの中を削ればわかりますし、 switchの使い方はドキュメントで確認できるのでは。
Zuishin

2020/10/05 11:05

Ctrl+K Ctrl+D を押すとインデントがきれいになり、カッコの対応がわかります。
guest

回答2

0

以下で文字列連結の+の中でdefender.hp+50
算術演算した結果を結合しようとしているのがおかしいと思います。

textmanager.battleLog(base.playername+"のヒール ➡ "+defender.playername+"のHPを50回復("+defender.hp+"➡"+defender.hp+50+")");

投稿2020/10/05 11:22

Gak

総合スコア83

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

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

Gak

2020/10/05 11:24

失礼しました。関係なかったみたいですね。
guest

0

自己解決

enumの定義をクラスの外にだすことで解決できました。
ありがとうございました。

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using BattleScene; namespace BattleScene.Chara { public enum PriestMagic {Heal,Parise,Poison,Attack} public class Priest : Player { TextManager textmanager; public Priest(object usename) : base(usename){ textmanager = GameObject.Find("battletext").GetComponent<TextManager>(); } public override void Attack(Player defender,int turnNumber){ textmanager.battleLog("Priestアタック"); int damage = calcDamage(defender); bool isParise = base.isParise(); if(isParise == true){ textmanager.battleLog(base.playername+"は麻痺した"); }else{ textmanager.battleLog(base.playername+"の攻撃"); this.priestAttack(defender,turnNumber); } base.attackfinished = true; } public void priestAttack(Player defender,int turnNumber){ PriestMagic useMagic = PriestMagic.Attack; if(turnNumber == 1){ if(UnityEngine.Random.Range(0,2) == 1){ useMagic = PriestMagic.Parise; }else{ useMagic = PriestMagic.Poison; } }else if(defender.team == base.team){ useMagic = PriestMagic.Heal; } switch(useMagic) { case PriestMagic.Parise : parise(defender); break; case PriestMagic.Poison : poison(defender); break; case PriestMagic.Heal : heal(defender); break; case PriestMagic.Attack : base.Attack(defender,turnNumber); break; } } public void parise(Player defender){ defender.abnormality = "parise"; textmanager.battleLog(base.playername+"のパライズ! ➡ "+defender.playername+"は麻痺した"); } public void poison(Player defender){ defender.abnormality = "poison"; textmanager.battleLog(base.playername+"のポイズン! ➡ "+defender.playername+"は毒状態になった"); } public void heal(Player defender){ textmanager.battleLog(base.playername+"のヒール ➡ "+defender.playername+"のHPを50回復("+defender.hp+"➡"+defender.hp+50+")"); defender.hp = defender.hp+50; base.mp = base.mp-20; } } }

投稿2020/10/05 11:22

Tomo0225

総合スコア67

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問