سورس حدس عدد با 4 کاربر در اندروید
سه شنبه 29 فروردین 1396در این مقاله قصد داریم یک سورس بازی قرار دهیم این بازی به این صورت است که شما باید یه عدد را حدس بزنید در این بازی 4 نفر می توانند شرکت نمایند به این صورت است که کاربر یک عدد را مثال زده و هر کدام از بازیکنان که عدد نزدیک را گفت اون برنده است
ابتدا کد لایه layout را قرار می دهیم:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/p1Title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginRight="10dp" android:layout_marginBottom="28dp" android:textSize="24sp" android:text="@string/player1_title"/> <EditText android:id="@+id/p1Text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toRightOf="@+id/p1Title" android:layout_alignParentTop="true" android:layout_marginBottom="20dp" android:inputType="number" android:singleLine="true" android:hint="@string/textHint"/> <TextView android:id="@+id/p2Title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/p1Title" android:layout_alignParentLeft="true" android:layout_marginRight="10dp" android:layout_marginBottom="28dp" android:textSize="24sp" android:text="@string/player2_title"/> <EditText android:id="@+id/p2Text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toRightOf="@+id/p2Title" android:layout_below="@+id/p1Text" android:layout_marginBottom="20dp" android:inputType="number" android:singleLine="true" android:hint="@string/textHint"/> <TextView android:id="@+id/p3Title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/p2Title" android:layout_alignParentLeft="true" android:layout_marginRight="10dp" android:layout_marginBottom="28dp" android:textSize="24sp" android:text="@string/player3_title"/> <EditText android:id="@+id/p3Text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toRightOf="@+id/p3Title" android:layout_below="@+id/p2Text" android:layout_marginBottom="20dp" android:inputType="number" android:singleLine="true" android:hint="@string/textHint"/> <TextView android:id="@+id/p4Title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/p3Title" android:layout_alignParentLeft="true" android:layout_marginRight="10dp" android:layout_marginBottom="28dp" android:textSize="24sp" android:text="@string/player4_title"/> <EditText android:id="@+id/p4Text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toRightOf="@+id/p4Title" android:layout_below="@+id/p3Text" android:layout_marginBottom="20dp" android:inputType="number" android:singleLine="true" android:hint="@string/textHint"/> <Button android:id="@+id/guessButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/p4Text" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" android:textSize="24sp" android:text="@string/guessButton" android:onClick="gButtonClick"/> <TextView android:id="@+id/numberLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/guessButton" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" android:textSize="24sp"/> <TextView android:id="@+id/winnerLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/numberLabel" android:layout_centerHorizontal="true" android:textSize="24sp"/> <TextView android:id="@+id/ownerLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginTop="10dp" android:textSize="12sp" android:text="@string/ownerInfo"/> <TextView android:id="@+id/versionLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/ownerLabel" android:layout_centerHorizontal="true" android:textSize="14sp" android:text="@string/versionInfo"/> </RelativeLayout>
در قسمت بعدی کد کلاس را می گذاریم:
package com.decider.guessinggame; import java.util.Random; public class Guess { public static int getWinner(String p1Value, String p2Value, String p3Value, String p4Value, final int rNumber) { int p1Number = 0, p2Number = 0, p3Number = 0, p4Number = 0; if (p1Value.length() > 0) { p1Number = Integer.parseInt(p1Value); } if (p2Value.length() > 0) { p2Number = Integer.parseInt(p2Value); } if (p3Value.length() > 0) { p3Number = Integer.parseInt(p3Value); } if (p4Value.length() > 0) { p4Number = Integer.parseInt(p4Value); } int winner = 0; if (p1Number == rNumber ) { winner = 1; } if (p2Number == rNumber) { winner = 2; } if (p3Number == rNumber) { winner = 3; } if (p4Number == rNumber) { winner = 4; } if (winner == 0) { winner = getClosest(p1Number, p2Number, p3Number, p4Number, rNumber); } return winner; } public static int getClosest(int p1Num, int p2Num, int p3Num, int p4Num, final int rNum) { int closest = 1; int small; p1Num = getDifference(p1Num, rNum); p2Num = getDifference(p2Num, rNum); p3Num = getDifference(p3Num, rNum); p4Num = getDifference(p4Num, rNum); small = p1Num; if (p2Num < small) { small = p2Num; closest = 2; } if (p3Num < small) { small = p3Num; closest = 3; } if (p4Num < small) { small = p4Num; closest = 4; } return closest; } public static int randomInteger(int Start, int End) { Random random = new Random(); long range = (long)End - (long)Start + 1; long fraction = (long)(range * random.nextDouble()); int randomNumber = (int)(fraction + Start); return randomNumber; } public static int getDifference(int num, final int rNum) { if (num != 0) { num = Math.abs(num - rNum); }else{ num = 100; } return num; } }
این کلاس به این صورت است که می اید چک می کند که اگر اولین کاربر عدد را درست گفته آن برنده است از 4 شرط استفاده می شود.و اگر آن عدد رندم با هر کدام از شرکت کننده ها برابر بود پیغام برنده بودن را می دهد.
package com.decider.guessinggame; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { private TextView numberText, winnerText; private EditText p1Text, p2Text, p3Text, p4Text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); numberText = (TextView) findViewById(R.id.numberLabel); winnerText = (TextView) findViewById(R.id.winnerLabel); p1Text = (EditText) findViewById(R.id.p1Text); p2Text = (EditText) findViewById(R.id.p2Text); p3Text = (EditText) findViewById(R.id.p3Text); p4Text = (EditText) findViewById(R.id.p4Text); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void gButtonClick(View view) { final String p1Value = p1Text.getText().toString(); final String p2Value = p2Text.getText().toString(); final String p3Value = p3Text.getText().toString(); final String p4Value = p4Text.getText().toString(); final int rNumber = Guess.randomInteger(1, 20); final int winner = Guess.getWinner(p1Value, p2Value, p3Value, p4Value, rNumber); numberText.setText(getResources().getString(R.string.numText) + " " + Integer.toString(rNumber)); winnerText.setText(getWinText(winner) + " " + getResources().getString(R.string.wins)); } public String getWinText(int id) { String winner = null; if (id == 1) { winner = getResources().getString(R.string.player1_title); } if (id == 2) { winner = getResources().getString(R.string.player2_title); } if (id == 3) { winner = getResources().getString(R.string.player3_title); } if (id == 4) { winner = getResources().getString(R.string.player4_title); } return winner; } }
در کلاس بالا ابزارهای استفاده شده را تعریف کرده ایم و دوم اینکه پیغام برنده یا بازنده شدن را به کاربر می دهیم
خروجی به صورت زیر خواهد بود:
- Android
- 1k بازدید
- 3 تشکر