سورس حدس عدد با 4 کاربر در اندروید

سه شنبه 29 فروردین 1396

در این مقاله قصد داریم یک سورس بازی قرار دهیم این بازی به این صورت است که شما باید یه عدد را حدس بزنید در این بازی 4 نفر می توانند شرکت نمایند به این صورت است که کاربر یک عدد را مثال زده و هر کدام از بازیکنان که عدد نزدیک را گفت اون برنده است

سورس حدس عدد با 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;
	}

}

در کلاس بالا ابزارهای استفاده شده را تعریف کرده ایم و دوم اینکه پیغام برنده یا بازنده شدن را به کاربر می دهیم

خروجی به صورت زیر خواهد بود:

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید