2016-09-26 2 views
0

Ich mache ein sehr kleines RPG-Spiel in C#, um etwas Geschick zu üben (und um Spaß zu haben!). Ich bin ziemlich weit mit den Bildern, Tasten und so weiter gekommen. Mein Problem ist, dass mir ein Fehler beim Versuch, meine Label-Strings in Ganzzahlen zu konvertieren für meine attackingPhase()-Methode zu konvertieren, geworfen wird.C# label string to int Umwandlungsfehler

Hier ist mein Code und ein Screenshot des Fehlers.

Ich glaube, dass mein Code korrekt ist, aber ich kann nicht herausfinden, warum der Fehler ausgelöst wird.

Vielen Dank für die Hilfe.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace RPG 
{ 
public partial class Form2 : Form 
{ 
    private Form1 mainForm = null; 

    public Form2(Form callingForm) 
    { 
     mainForm = callingForm as Form1; 
     InitializeComponent(); 

     pictureBox1.Image = mainForm.MyPictureBoxEnemy.Image; 
     pictureBox2.Image = mainForm.MyPictureBoxHero.Image; 
     lbl_Health_Value_Enemy.Text = "100"; 
     lbl_Health_Value_Hero.Text = "100"; 

    } 

    public void attackingPhase() 
    { 
     Random rnd = new Random(); 

     int enemy_damage = rnd.Next(1, 25); 
     int hero_damage = rnd.Next(2, 15); 

     var enemyHealth = Convert.ToInt32(lbl_Health_Value_Enemy); 
     var heroHealth = Convert.ToInt32(lbl_Health_Value_Hero); 

     if((enemyHealth & heroHealth) > 0) 
     { 
      enemyHealth = enemyHealth - enemy_damage; 
      heroHealth = heroHealth - hero_damage; 
     } else 
     { 
      MessageBox.Show("DEAD"); 
     } 

     lbl_Health_Value_Enemy.Text = enemyHealth.ToString(); 
     lbl_Health_Value_Hero.Text = heroHealth.ToString(); 
    } 

    private void btnAttack_Click(object sender, EventArgs e) 
    { 
     attackingPhase(); 
    } 
} 
} 

Error Message

+1

der Fehler Ihnen genau sagt, was falsch ist 'lbl_Health_Value_Enemy' zu' lbl_Health_Value_Enemy.Text' ändern – MethodMan

+1

Stimmen Sie mit methodman überein, auch empfehle ich, Int32.TryParse (string, out yourint) zu verwenden, um – Danimal

+0

zu behandeln Der Fehler sagt nicht das Problem ist w Mit dem '.Text' versuchte ich .toString, aber der Fehler war mir nicht klar. Ich bin mir nicht sicher, warum dies bei der Bitte um Hilfe abgelehnt würde. Ich fragte eine gültige Frage – Ashton

Antwort

4

Sie müssen die Eigenschaft Text eines Etiketts konvertieren,

var enemyHealth = Convert.ToInt32(lbl_Health_value_Enemy.Text); 
var heroHealth = Convert.ToInt32(lbl_Health_Value_Hero.Text); 
+0

GAH zu tun! Na sicher! Ich versuchte es mit '.toString()' und es warf auch den Fehler aber natürlich muss .Text wegen des Aufklebers sein. Vielen Dank! :) – Ashton

+0

werde ich! Ich wurde aus irgendeinem Grund abgelehnt, aber für mich war es eine berechtigte Frage und ich habe alle Informationen zur Verfügung gestellt:/Ich werde als Antwort markieren, wenn das Zeitlimit dafür abgelaufen ist. Vielen Dank! – Ashton

+0

@Ashton Upvoted es wahrscheinlich, weil Sie den Screenshot anstatt Code – Sajeetharan