Skip to content
Snippets Groups Projects
Commit 4b94261e authored by jez04's avatar jez04
Browse files

feat: initial commit with src

parent 497866c3
Branches
No related merge requests found
# Eclipse
.classpath
.project
.settings/
# Intellij
.idea/
*.iml
*.iws
# Mac
.DS_Store
# Maven
log/
target/
pom.xml 0 → 100644
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cz.vsb.fei.efrei</groupId>
<artifactId>efrei-lab03</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>efrei-lab03</name>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>21</maven.compiler.release>
<JUnit.version>5.11.0</JUnit.version>
<log4j.version>2.23.1</log4j.version>
<lombok.version>1.18.34</lombok.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${JUnit.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.0</version>
</plugin>
</plugins>
</build>
</project>
package cz.vsb.fei.efrei.lab03;
public class AlreadyDeadException extends Exception {
private static final long serialVersionUID = -7052667091386255519L;
private Fighter fighter;
public AlreadyDeadException(Fighter fighter) {
this.fighter = fighter;
}
public Fighter getFighter() {
return fighter;
}
}
package cz.vsb.fei.efrei.lab03;
import java.util.Random;
import java.util.Scanner;
public class DangerWorld {
private static final Random RANDOM = new Random();
public static void main(String[] args) {
Fighter[] fighters = new Fighter[6];
try (Scanner s = new Scanner(System.in)) {
System.out.println("Type name of monster:");
String name = s.next();
Monster monster = new Monster(name);
fighters[0] = monster;
fighters[1] = new Monster("King");
fighters[2] = new Monster("Queen");
fighters[3] = new Monster("Fairy");
fighters[4] = new Hero("Shrek");
fighters[5] = new Hero("Cinderela");
int rounds = 100;
for (int i = 0; i < rounds; i++) {
Fighter fighter1 = fighters[RANDOM.nextInt(6)];
Fighter fighter2 = fighters[RANDOM.nextInt(6)];
try {
fighter1.attackedBy(fighter2);
} catch (AlreadyDeadException e) {
System.out.println(
"Ups! Fighter "
+ fighter2.getName()
+ " attack already dead "
+ fighter1.getName());
}
}
}
}
}
package cz.vsb.fei.efrei.lab03;
public interface Fighter {
int getLives();
public default boolean isAlive() {
return getLives() > 0;
}
public void attackedBy(Fighter fighter) throws AlreadyDeadException;
public String getName();
public int getStrenght();
}
package cz.vsb.fei.efrei.lab03;
import java.util.Random;
public class Hero implements Fighter{
private static final Random RANDOM = new Random();
private String name;
private int strenght;
private int lives;
public Hero(String name, int strenght) {
if(name == null || name.length() < 2 ||
strenght < 30) {
throw new IllegalArgumentException(
"Sorry wrong arguments!!");
}
this.name = name;
this.strenght = strenght;
this.lives = 100;
}
public Hero(String name) {
this(name, RANDOM.nextInt(50) + 50);
}
@Override
public void attackedBy(Fighter fighter)
throws AlreadyDeadException {
if(!isAlive()) {
throw new AlreadyDeadException(this);
}
System.out.println(fighter.getName() + " attack " + getName() + "!");
if (RANDOM.nextBoolean()) {
System.out.println("Attack was blocked!! Ha. Ha. Ha.");
return;
}
lives -= fighter.getStrenght();
}
@Override
public String getName() {
return name;
}
@Override
public int getStrenght() {
return strenght;
}
@Override
public int getLives() {
return lives;
}
@Override
public String toString() {
return "Hero " + name + "(" + strenght + ") - has " + lives + " lives.";
}
}
package cz.vsb.fei.efrei.lab03;
import java.util.Random;
public class Monster implements Fighter {
private static final Random RANDOM = new Random();
private String name;
private final int strenght;
private int lives;
public Monster(String name, int strenght) {
if(name == null || name.length() < 2 ) {
throw new IllegalArgumentException(
"Too short name");
}
if(strenght < 10) {
throw new IllegalArgumentException(
"Monster is too weak!!");
}
this.name = name;
this.strenght = strenght;
this.lives = 100;
}
public Monster(String name) {
this(name, RANDOM.nextInt(90) + 10);
}
@Override
public void attackedBy(Fighter fighter) {
System.out.println(fighter.getName() + " attack " + getName() + "!");
lives -= fighter.getStrenght();
}
@Override
public String getName() {
return name;
}
@Override
public int getStrenght() {
return strenght;
}
@Override
public int getLives() {
return lives;
}
@Override
public String toString() {
return "Monster " + name + "(" + strenght + ") - has " + lives + " lives.";
}
}
package cz.vsb.fei.efrei.lab03;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
public class Utils {
public static final Random RANDOM = new Random();
private static List<String> heroNames = Arrays.asList("Captain Freedom", "Iron Blade", "Shadow Hunter",
"Silver Hawk", "Mighty Thunder", "Lunar Knight", "Phoenix Blaze", "Stormbreaker", "Star Guardian",
"Solar Sentinel", "Dark Raven", "Blaze Falcon", "Crystal Viper", "Lightning Strike", "Firestorm",
"Eagle Eye", "Nightshade", "Frostbite", "Wind Whisperer", "Shadow Blaze");
private static List<String> monsterNames = Arrays.asList("Nightmare Reaper", "Shadow Fiend", "Bonecrusher",
"Venomous Hydra", "Doomfang", "Blightbringer", "Void Stalker", "Inferno Drake", "Ghoul King", "Frost Wyrm",
"Terrorclaw", "Bloodfeast", "Ravenous Maw", "Storm Serpent", "Hellhound", "Dark Overlord", "Necroshade",
"Plaguebeast", "Stone Golem", "Fire Leviathan");
public String generateHeroName() {
return heroNames.get(RANDOM.nextInt(heroNames.size()));
}
public String generateMonsterName() {
return monsterNames.get(RANDOM.nextInt(monsterNames.size()));
}
}
module cz.vsb.fei.efrei.lab03 {
requires static lombok;
requires org.apache.logging.log4j;
}
\ No newline at end of file
<Configuration>
<Appenders>
<Console name="Console">
<PatternLayout
pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"></AppenderRef>
</Root>
</Loggers>
</Configuration>
package cz.vsb.fei.efrei.lab03;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
/**
* Unit test for simple App.
*/
class AppTest {
/**
* Rigorous Test :-)
*/
@Test
void shouldAnswerWithTrue() {
assertTrue(true);
}
}
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