آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

(دوستان لطفا راهنمایی کنین)اشکال دربرنامه نویسی بازی  Hangman

Hojat13  10 سال پیش  10 سال پیش
0 0

باعرض سلام خدمت کلیه دوستان

بازی hangmanراتا اخر نوشتم و به مشکل برخوردم وبرنامه کرش می کنه.حروفی که غلط هست رانمایش نمیده ولی حروف صحیح  را نمایش میده.

لینک دانلود سورس را گذاشتم

لطفا راهنمایی کنین .

باتشکر

http://cdn.persiangig.com/download/1FY6pw/dl

+1 0
بهتر بود شات از لاگ برنامه میذاشتی که حصوله خوندن کد داره یه شات از لاگ کت بزار تا ببینیم که علت کرش چیه (10 سال پیش)
0 0
شات لاگ کت را گذاشتم. (10 سال پیش)
+1 0
خط 84 برنامت مشکل داره اونجایی که تو لاگ کت نام پکیجت رو نوشته کلیک کن مستقیم میری رو خطی که خطا داره و این چیزی که من فهمیدم داری مقداری که داخل آرایه نیست رو میخونی که همچین اندیسی تو آرایه وجود نداره. مطمئن نیستم یه چک بکنید (10 سال پیش)
0 0
توی خط 84 شما دارید یک Index از آرایه رو میگیرید که از تعداد اون آرایه بیشتر هست (10 سال پیش)
0 0
دوستان مشکلم حل نشد.چطوری می تونم سورس کدش را اپلود کنم؟ (10 سال پیش)
+1 0
کد خودتون رو با سورس کد استاد مقایسه کنید و میتونید این کد رو تو یه سرور رایگان مثل پرشین گیگ و پیکوفایل upload کنید و لینکش رو بدید به دوستان (10 سال پیش)
0 0
لینک دانلود سورس را قرار دادم.لطفا راهنمایی کنین. (10 سال پیش)
0 0
دوستان لطفا راهنمایی کنین (10 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
HoCoder  10 سال پیش
+1 0

سلام

من کد شما اول تست نکردم و کد رو کمی اصلاح کردم و تست هم شده ازش استفاده کنید

 public class MainActivity extends Activity {

public String[] words = {
"hello" ,
"goodbye" ,
"bycicle" ,
"massage" ,
"hangman"
};

public String currentWord;

public TextView txtDashes;
public TextView txtWrong;

public Button btnNewGuess;

public ArrayList<Button> invisibleButton = new ArrayList<Button>();

public int nWrong;
public int nCorrect;

@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.main );

txtDashes = (TextView) findViewById( R.id.txtDashes );
txtWrong = (TextView) findViewById( R.id.txtWrong );

btnNewGuess = (Button) findViewById( R.id.btnNewGuess );

btnNewGuess.setOnClickListener( new OnClickListener() {

@Override
public void onClick( View v ) {
resetGame();
}
} );

resetGame();

}

public void resetGame() {
int randomNumber = (int) ( Math.random() * words.length );
currentWord = words[randomNumber].toLowerCase();

String dashes = "";
String spaces = "";

for ( int i = 0 ; i < currentWord.length() ; i++ ) {
dashes += "-";
spaces += " ";
}

txtDashes.setText( dashes );
txtWrong.setText( spaces );

for ( Button btn : invisibleButton ) {
btn.setVisibility( View.VISIBLE );
}

invisibleButton.clear();

nCorrect = 0;
nWrong = 0;
}

public void letterOnClickListener( View view ) {
Button btn = (Button) view;

btn.setVisibility( View.INVISIBLE );
invisibleButton.add( btn );

char letter = btn.getText().toString().toLowerCase().toCharArray()[0];

if (currentWord.contains( "" + letter )) {
char[] dashesArray = txtDashes.getText().toString().toCharArray();
char[] charArray = currentWord.toCharArray();
for ( int i = 0 ; i < charArray.length ; i++ ) {
if (charArray[i] == letter) {
dashesArray[i] = letter;
nCorrect++;
}
}

txtDashes.setText( new String( dashesArray ) );

if (nCorrect == currentWord.length()) {
Toast.makeText( MainActivity.this , "You Win!" , Toast.LENGTH_SHORT ).show();
resetGame();
return;
}
} else {

if (nWrong >= currentWord.length() - 1) {
Toast.makeText( MainActivity.this , "You lose!" , Toast.LENGTH_SHORT ).show();
resetGame();
return;
}

char[] charArray = txtWrong.getText().toString().toCharArray();
charArray[nWrong] = letter;
txtWrong.setText( new String( charArray ) );
nWrong++;
}

}
}

0 0
سلام. دوست عزیز سورس کد استاد هم مشابه سورس کد شماست و عمل هم می کنه ولی برا من تا همون مرحله بیشتر جواب نمی ده .حتی یه دفعه دیگه هم نوشتم.اگه محبت کنین سورس کد خودم رابررسی کنین ممنون میشم. (10 سال پیش)
+1 0
دوست عزیز برنامه شما به این دلیل خطا میده که شما یک if برا چک کردن تعداد خطاهای کاربر نذاشتین و اگه تعداد خطا ها زیاد بشه چون توی charrArray اون اندیس وجود نداره کرش میکنه (10 سال پیش)
0 0
اون ifراهم گذاشتم ولی درست نشد .تو فیلم آموزشی استاد تا قبل از اینکه ifبگذارن کار می کنه ونیازی به if نیست ولی منif راهم گذاشتم ولی حل نشد. (10 سال پیش)
+1 0
به نظر من شما کد رو کامل بنویسید و بعد دوباره بررسی کنید و کد رو پاک کنید و دوباره بنویسید اینطوری کاملا برنامه رو میفهمین. کد شما هم مشکلی بیشتر از این من نتونستم داخلش پیدا کنم (10 سال پیش)
0 0
ممنون لطف کردین (10 سال پیش)
پاسخ به سوال 
Reza  10 سال پیش
+1 0

سلام

    کل مشکل به خاطر این بود که برنامت یه فاصله کم داشت ، از روی Log میتونستی بفهمی ، گفته که در خط 103 خطای اندیس داری :

 chararray[nwrong] = letter;

    chararray طولش صفره ، و شما اندیس صفرم رو میخواید . چرا طولش صفره ؟ چون مقدار string خالیه و string هم همون مقدار txtwrong هست :

 String string = txtwrong.getText().toString();
char[] chararray = string.toCharArray();

حالا txtwrong چرا خالیه چون اون بالا در متغییر spaces یه فاصله کم گذاشتی و طولش صفر شده

اصلاح شده :

0 0
داداش خیلی ممنون.واقعا لطف کردی. (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .