2015-05-01 5 views
-1

Я занят лабиринтом, и в настоящее время я работаю над этой проблемой. Я хочу, чтобы когда-нибудь кто-то ударил по стене, он использует метод Movetostart, и я хочу, чтобы он подсчитывал с помощью var death. До сих пор я получил это.Добавление переменной int в метку и ее добавление +1

int death = 0; 
private void MoveToStart() 
{ 
    Count.Text = death.ToString(); 
    Point startingPoint = panel1.Location; 
    startingPoint.Offset(301, 543); 
    Cursor.Position = PointToScreen(startingPoint); 
    ms = 0; 
    sec = 0; 
    min = 0; 
    hour = 0; 
    death = +1; 
} 

Сейчас проблема заключается в том, что смерть остается только на 1 и не имеет значения, сколько раз она попадает в стену не подсчитывать.

+0

'death = + 1' не совсем правильный синтаксис ... подумайте о том, что означает это утверждение. –

+0

Ваша логика почти правильна, вам нужно назначить значение смерти обратно в текстовое поле, также прочитанное на перегрузках Оператора https://msdn.microsoft.com/en-us/library/sa7629ew.aspx – MethodMan

+0

вы можете использовать death + = 1, и вы должны поместить его в Count.text после того, как вы измените его не раньше – Scriven

ответ

3

Вы, вероятно, хотите, чтобы увеличить death, прежде чем показать его, или же он будет демонстрироваться на 1:

private void MoveToStart() 
{ 
    ++death; 
    Count.Text = death.ToString(); 
    Point startingPoint = panel1.Location; 
    startingPoint.Offset(301, 543); 
    Cursor.Position = PointToScreen(startingPoint); 
    ms = 0; 
    sec = 0; 
    min = 0; 
    hour = 0; 
} 

с помощью оператора ++ увеличит количество один и назначить его обратно в объект , то же, что и death += 1;.

Настоящая проблема с кодом заключается в том, что death = +1 - это не то же самое, что и death += 1. То, что вы делаете, просто переустанавливает death на +1, или 1.

0

Я предполагаю, что вы хотите написать death += 1; и не death = +1;

Edit: Также, как и другие отметили, вы должны присвоить значение Count.Text после этого увеличения значения или текст на Count.Text будет постоянно один шаг назад.

+1

это не ответ. Посмотрите на код, и вы можете ясно, что ОП назначает значение TextBox изначально, но после увеличения значения смерти он не обновляет текстовое поле. – MethodMan

+1

@MethodMan: Ваше право. Я только дал половину решения. Я обновил ответ. – user707727

0

Если вы хотите добавить 1 к вашей «смерти» переменной, вы можете записать его как этот

int death = 0; 
private void MoveToStart() 
{ 
    Count.Text = death.ToString(); 
    Point startingPoint = panel1.Location; 
    startingPoint.Offset(301, 543); 
    Cursor.Position = PointToScreen(startingPoint); 
    ms = 0; 
    sec = 0; 
    min = 0; 
    hour = 0; 
    death++; 
} 

или

int death = 0; 
private void MoveToStart() 
{ 
    Count.Text = death.ToString(); 
    Point startingPoint = panel1.Location; 
    startingPoint.Offset(301, 543); 
    Cursor.Position = PointToScreen(startingPoint); 
    ms = 0; 
    sec = 0; 
    min = 0; 
    hour = 0; 
    death = death + 1; 
} 

или создать другую переменную, которую вы используете, чтобы добавить к вашему смерть каждый раз, когда метод называется

int death = 0; 
int _numberToAddEachTime = 1; 
private void MoveToStart() 
{ 
    Count.Text = death.ToString(); 
    Point startingPoint = panel1.Location; 
    startingPoint.Offset(301, 543); 
    Cursor.Position = PointToScreen(startingPoint); 
    ms = 0; 
    sec = 0; 
    min = 0; 
    hour = 0; 
    death = death + _numberToAddEachTime; 
} 
Смежные вопросы