Commit 4e884139 authored by areej.mohammad's avatar areej.mohammad

I added src

parents
package hackingrace;
public class AscendingHackerThread extends HackerThread{
public AscendingHackerThread(Vault vault){
super(vault,"Ascending Hacker");
}
@Override
public void run(){
for(int guess=0;guess<=9999;guess++) {
if(vault.isCorrectPassword(guess)){
onHacked(guess);
}
}
}
}
package hackingrace;
public class DescendingHackerThread extends HackerThread
{
public DescendingHackerThread (Vault vault){
super(vault,"Descending Hacker");
}
@Override
public void run(){
for(int guess=10000; guess>=0;guess --)
{
if(vault.isCorrectPassword(guess)){
onHacked(guess);
}
}
}
}
package hackingrace;
public abstract class HackerThread extends Thread {
protected final Vault vault;
public HackerThread(Vault vault,String name)
{
super(name);
this.vault=vault;
}
@Override
public abstract void run();
protected void onHacked(int password){
System.out.printf("*** % WINS! The vault has been hacked with password: %d ****\n",
this.getName(),password);
System.exit(0);
}
}
package hackingrace;
public class PoliceThread extends Thread{
public PoliceThread(){
super("Police");
}
@Override
public void run(){
for(int i = 10; i>=0;i--)
if (i > 0) {
System.out.printf("Police arrive in %d seconds...\n", i);
} else {
// عند الوصول إلى 0، تفوز الشرطة [cite: 23, 31]
System.out.println("\n**************************************************");
System.out.println("Game over for you hackers! Police have arrived.");
System.out.println("**************************************************");
// يُنهي البرنامج بالكامل [cite: 23, 57]
System.exit(0);
}
try{
Thread.sleep(1000);
} catch (InterruptedException e){
return;
}
}
}
package hackingrace;
import java.util.Random;
public class Vault {
private final int correctpassword;
public Vault(){
this.correctpassword=new Random().nextInt(10000);
}
public boolean isCorrectPassword (int gusses)
{
try {
Thread.sleep(5);
}catch(InterruptedException e){
Thread.currentThread().interrupt();
}
return gusses==this.correctpassword;
}
}
package hackingrace;
public class VaultHackingRace {
public static void main(String[] args){
Vault vault=new Vault();
Thread ascendingHacker = new AscendingHackerThread(vault);
Thread descendingHacker = new DescendingHackerThread(vault);
Thread policeThread = new PoliceThread();
// 3. يستخدم أولوية Thread.MAX_PRIORITY لنياسب القراصنة [cite: 28, 45]
ascendingHacker.setPriority(Thread.MAX_PRIORITY);
descendingHacker.setPriority(Thread.MAX_PRIORITY);
// نيسب الشرطة يعمل بالأولوية الافتراضية (عادةً NORM_PRIORITY)
// 4. يُطلق النياسب الثلاثة في نفس الوقت [cite: 27]
policeThread.start();
ascendingHacker.start();
descendingHacker.start();
System.out.println("--- Vault Hacking Race Started ---");
System.out.println("Two hackers are competing to find the password (0-9999).");
System.out.println("Police arrive in 10 seconds. Hackers have MAX_PRIORITY.");
System.out.println("------------------------------------");
// البرنامج ينتظر حتى يُنهي System.exit(0)
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment