From 619dc8edf40419b81392eb9aca662d54d9c7f61c Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Fri, 14 Feb 2025 08:01:12 -0700
Subject: [PATCH 01/17] notes about what to refactor

---
 Assignment_1/Notes.txt                                     | 4 +---
 Assignment_1/README.md                                     | 7 +++++++
 .../assignment3GUI - Classmate's/src/World.java            | 3 +++
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/Assignment_1/Notes.txt b/Assignment_1/Notes.txt
index ab02047..a95f30c 100644
--- a/Assignment_1/Notes.txt
+++ b/Assignment_1/Notes.txt
@@ -1,5 +1,3 @@
 Going to use either these 3 codes:
 
-classmate's,
-Liam's,
-Or Guis'
\ No newline at end of file
+classmate's,
\ No newline at end of file
diff --git a/Assignment_1/README.md b/Assignment_1/README.md
index b11b1f2..0ebf17b 100644
--- a/Assignment_1/README.md
+++ b/Assignment_1/README.md
@@ -4,3 +4,10 @@
 ---
 
 Used code from __ and refactored 
+
+
+Refactor branch 1: De-nesting code in world
+
+refactor branch 2: comments
+
+refactor branch 3 
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java
index 73af68f..6484730 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
@@ -44,6 +44,7 @@ public class World
             }
         }
         aWorld = FileInitialization.read();
+		// refactor 1 this could be de-nested for readability
         for (r = 0; r < SIZE; r++)
         {
         	System.out.println("");
@@ -72,6 +73,7 @@ public class World
         System.out.println(" - "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+ "- ");
         sortLocations();
     }
+	// Same here this could be de-nested
     public void sortDead() {//supposed to try and sort null elements and bring them to the end doesn't always work as intended
     	for (int i = 0; i<=elfCounter+orcCounter;i++) {
     		if (loc[i] != null) {
@@ -87,6 +89,7 @@ public class World
     		}
     	}	
     }
+	//	and potenitally here
     public void sortLocations() {//puts the elfs in the beginning of the array, checks if there is an orc before and elf and if there is it swaps positions in the array
     	for (int j = 0; j<elfCounter+orcCounter; j++) {
     		if (loc[j+orcCounter] != null) {	
-- 
GitLab


From 05eeace9b8fb646f577847264f1b165eaec127a5 Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Sun, 16 Feb 2025 16:36:53 -0700
Subject: [PATCH 02/17] Half-way through refactor 1 where i am de nesting a lot
 of the if statements to make it more readable ive added some tests for the
 functions ive changed but it is a gui project so for the most part i am
 comparing the gui result vs the old resultso far completely the same

---
 .../Junit/tut_ex1/Book.java                   |  46 ++++
 .../Junit/tut_ex1/Library.java                |  64 +++++
 .../LibraryManagementSystemTestComplete.java  |  68 +++++
 .../Junit/tut_ex1/Loan.java                   |  38 +++
 .../Junit/tut_ex1/Member.java                 |  36 +++
 Assignment_1/Notes.txt                        |  68 ++++-
 Assignment_1/README.md                        |   8 +-
 .../src/refactor_1_testOG.java                |  46 ++++
 .../src/Entity.java                           |   2 +
 .../src/FileInitialization.java               |   2 +-
 .../src/GamePanel.java                        |   1 +
 .../src/Location.java                         |   1 +
 .../src/World.java                            | 256 +++++++++---------
 .../src/refactor_1_test.java                  |  49 ++++
 .../src/reworks.java                          |  60 ++++
 out/production/501-gitlab/Entity.class        | Bin 0 -> 1769 bytes
 out/production/501-gitlab/FileContainer.class | Bin 0 -> 696 bytes
 .../501-gitlab/FileInitialization.class       | Bin 0 -> 3374 bytes
 out/production/501-gitlab/GameFrame.class     | Bin 0 -> 641 bytes
 .../501-gitlab/GamePanel$MyKeyAdapter.class   | Bin 0 -> 1197 bytes
 out/production/501-gitlab/GamePanel.class     | Bin 0 -> 4923 bytes
 out/production/501-gitlab/GameStatus.class    | Bin 0 -> 2785 bytes
 out/production/501-gitlab/Location.class      | Bin 0 -> 1160 bytes
 out/production/501-gitlab/Simulator.class     | Bin 0 -> 402 bytes
 out/production/501-gitlab/World.class         | Bin 0 -> 5400 bytes
 out/production/501-gitlab/data.txt            |  10 +
 .../501-gitlab/refactor_1_test.class          | Bin 0 -> 2637 bytes
 27 files changed, 622 insertions(+), 133 deletions(-)
 create mode 100644 Assignment_1/Assignment_resources/Junit/tut_ex1/Book.java
 create mode 100644 Assignment_1/Assignment_resources/Junit/tut_ex1/Library.java
 create mode 100644 Assignment_1/Assignment_resources/Junit/tut_ex1/LibraryManagementSystemTestComplete.java
 create mode 100644 Assignment_1/Assignment_resources/Junit/tut_ex1/Loan.java
 create mode 100644 Assignment_1/Assignment_resources/Junit/tut_ex1/Member.java
 create mode 100644 Assignment_1/original_code/assignment3GUI - Classmate's/src/refactor_1_testOG.java
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java
 create mode 100644 out/production/501-gitlab/Entity.class
 create mode 100644 out/production/501-gitlab/FileContainer.class
 create mode 100644 out/production/501-gitlab/FileInitialization.class
 create mode 100644 out/production/501-gitlab/GameFrame.class
 create mode 100644 out/production/501-gitlab/GamePanel$MyKeyAdapter.class
 create mode 100644 out/production/501-gitlab/GamePanel.class
 create mode 100644 out/production/501-gitlab/GameStatus.class
 create mode 100644 out/production/501-gitlab/Location.class
 create mode 100644 out/production/501-gitlab/Simulator.class
 create mode 100644 out/production/501-gitlab/World.class
 create mode 100644 out/production/501-gitlab/data.txt
 create mode 100644 out/production/501-gitlab/refactor_1_test.class

diff --git a/Assignment_1/Assignment_resources/Junit/tut_ex1/Book.java b/Assignment_1/Assignment_resources/Junit/tut_ex1/Book.java
new file mode 100644
index 0000000..cd20a05
--- /dev/null
+++ b/Assignment_1/Assignment_resources/Junit/tut_ex1/Book.java
@@ -0,0 +1,46 @@
+package LibraryManagement;
+
+public class Book {
+    private String title;
+    private String author;
+    private boolean loaned;
+
+    public Book(String title, String author) {
+        this.title = title;
+        this.author = author;
+        this.loaned = false;
+    }
+
+    public boolean isLoaned() {
+        return loaned;
+    }
+
+    public void setLoaned(boolean loaned) {
+        this.loaned = loaned;
+    }
+
+    // Getters and setters
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        Book book = (Book) obj;
+        return title.equals(book.title) && author.equals(book.author);
+    }
+}
\ No newline at end of file
diff --git a/Assignment_1/Assignment_resources/Junit/tut_ex1/Library.java b/Assignment_1/Assignment_resources/Junit/tut_ex1/Library.java
new file mode 100644
index 0000000..27e94c4
--- /dev/null
+++ b/Assignment_1/Assignment_resources/Junit/tut_ex1/Library.java
@@ -0,0 +1,64 @@
+package LibraryManagement;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class Library {
+    private List<Book> books;
+    private List<Member> members;
+    private List<Loan> loans;
+
+    public Library() {
+        this.books = new ArrayList<>();
+        this.members = new ArrayList<>();
+        this.loans = new ArrayList<>();
+    }
+
+    public void addBook(Book book) {
+        books.add(book);
+    }
+
+    public void addMember(Member member) {
+        members.add(member);
+    }
+
+    public void loanBook(Book book, Member member) throws Exception {
+        if (!books.contains(book)) {
+            throw new Exception("Book not in library");
+        }
+        if (!members.contains(member)) {
+            throw new Exception("Member not registered");
+        }
+        if (book.isLoaned()) {
+            throw new Exception("Book already loaned");
+        }
+        Loan loan = new Loan(book, member);
+        loans.add(loan);
+        book.setLoaned(true);
+    }
+
+    public void returnBook(Book book) throws Exception {
+        if (!books.contains(book)) {
+            throw new Exception("Book not in library");
+        }
+        Loan loan = loans.stream().filter(l -> l.getBook().equals(book)).findFirst().orElse(null);
+        if (loan == null) {
+            throw new Exception("Book not loaned");
+        }
+        loans.remove(loan);
+        book.setLoaned(false);
+    }
+
+    public List<Book> getBooks() {
+        return books;
+    }
+
+    public List<Member> getMembers() {
+        return members;
+    }
+
+    public List<Loan> getLoans() {
+        return loans;
+    }
+}
\ No newline at end of file
diff --git a/Assignment_1/Assignment_resources/Junit/tut_ex1/LibraryManagementSystemTestComplete.java b/Assignment_1/Assignment_resources/Junit/tut_ex1/LibraryManagementSystemTestComplete.java
new file mode 100644
index 0000000..d61dee6
--- /dev/null
+++ b/Assignment_1/Assignment_resources/Junit/tut_ex1/LibraryManagementSystemTestComplete.java
@@ -0,0 +1,68 @@
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
+
+
+class LibraryManagementSystemTestComplete {
+
+    private static Library library;
+    private static Book book1;
+    private static Book book2;
+    private static Member member1;
+    private static Member member2;
+
+    @BeforeEach
+    void setUp() {
+        // Create library and add books and members
+        library = new Library();
+        book1 = new Book("The Great Gatsby", "F. Scott Fitzgerald");
+        book2 = new Book("To Kill a Mockingbird", "Harper Lee");
+        member1 = new Member("John Doe", "12345");
+        member2 = new Member("Jane Smith", "67890");
+
+        library.addBook(book1);
+        library.addBook(book2);
+        library.addMember(member1);
+        library.addMember(member2);
+    }
+
+    @Test
+    void testLoanBook() throws Exception {
+        library.loanBook(book1, member1);
+        assertTrue(book1.isLoaned());
+        assertEquals(1, library.getLoans().size());
+    }
+
+    @Test
+    void testLoanBookNotRegistered() {
+        Member newMember = new Member("New Member", "99999");
+        assertThrows(Exception.class, () -> library.loanBook(book2, newMember));
+    }
+
+    @Test
+    void testReturnBook() throws Exception {
+        library.loanBook(book1, member1);
+        library.returnBook(book1);
+        assertFalse(book1.isLoaned());
+        assertEquals(0, library.getLoans().size());
+    }
+
+    @Test
+    void testReturnBookNotLoaned() {
+        assertThrows(Exception.class, () -> library.returnBook(book2));
+    }
+
+    @Test
+    void testAddBook() {
+        Book newBook = new Book("1984", "George Orwell");
+        library.addBook(newBook);
+        assertTrue(library.getBooks().contains(newBook));
+    }
+
+    @Test
+    void testAddMember() {
+        Member newMember = new Member("New Member", "99999");
+        library.addMember(newMember);
+        assertTrue(library.getMembers().contains(newMember));
+    }
+}
diff --git a/Assignment_1/Assignment_resources/Junit/tut_ex1/Loan.java b/Assignment_1/Assignment_resources/Junit/tut_ex1/Loan.java
new file mode 100644
index 0000000..07edb88
--- /dev/null
+++ b/Assignment_1/Assignment_resources/Junit/tut_ex1/Loan.java
@@ -0,0 +1,38 @@
+package LibraryManagement;
+
+public class Loan {
+    private Book book;
+    private Member member;
+    private java.time.LocalDate loanDate;
+
+    public Loan(Book book, Member member) {
+        this.book = book;
+        this.member = member;
+        this.loanDate = java.time.LocalDate.now();
+    }
+
+    // Getters and setters
+    public Book getBook() {
+        return book;
+    }
+
+    public void setBook(Book book) {
+        this.book = book;
+    }
+
+    public Member getMember() {
+        return member;
+    }
+
+    public void setMember(Member member) {
+        this.member = member;
+    }
+
+    public java.time.LocalDate getLoanDate() {
+        return loanDate;
+    }
+
+    public void setLoanDate(java.time.LocalDate loanDate) {
+        this.loanDate = loanDate;
+    }
+}
\ No newline at end of file
diff --git a/Assignment_1/Assignment_resources/Junit/tut_ex1/Member.java b/Assignment_1/Assignment_resources/Junit/tut_ex1/Member.java
new file mode 100644
index 0000000..ef2f678
--- /dev/null
+++ b/Assignment_1/Assignment_resources/Junit/tut_ex1/Member.java
@@ -0,0 +1,36 @@
+package LibraryManagement;
+
+public class Member {
+    private String name;
+    private String id;
+
+    public Member(String name, String id) {
+        this.name = name;
+        this.id = id;
+    }
+
+    // Getters and setters
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        Member member = (Member) obj;
+        return id.equals(member.id);
+    }
+}
\ No newline at end of file
diff --git a/Assignment_1/Notes.txt b/Assignment_1/Notes.txt
index a95f30c..39a212a 100644
--- a/Assignment_1/Notes.txt
+++ b/Assignment_1/Notes.txt
@@ -1,3 +1,69 @@
 Going to use either these 3 codes:
 
-classmate's,
\ No newline at end of file
+classmate's,
+
+
+
+-------------
+
+
+//public void attack(int index) {
+//    if(((loc[index].getType() == 'O') && (aWorld[tempRow][tempColumn].getAppearance() != 'O')) ||
+//            ((loc[index].getType() == 'E') && (aWorld[tempRow][tempColumn].getAppearance() != 'E'))) {
+//        loc[index].setCanMove(true);
+//        return;
+//    }
+//    turnSinceAtk = 0;
+//    if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+//        HP = aWorld[tempRow][tempColumn].getHitPoints();
+//        aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ELF_DAMAGE);
+//        HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
+//        if (GameStatus.debugModeOn) {//attack data for elf attackers
+//            status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+//        }
+//        if (aWorld[tempRow][tempColumn].getHitPoints() >0){
+//            return;
+//        }
+//        aWorld[tempRow][tempColumn] = null;
+//        orcCounter--;
+//        sortDead();
+//        if(loc[index] != null) {
+//            loc[index].setCanMove(true);
+//        }
+//        if (orcCounter > 0) {
+//            return;
+//        }
+//        System.out.println("Elves win no more orcs left.");
+//        programRunning = false;
+//        if(GameStatus.debugModeOn) {//lose condition data
+//            status.orcLoseDebug(orcCounter);
+//        }
+//    } else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+//        HP = aWorld[tempRow][tempColumn].getHitPoints();
+//        aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ORC_DAMAGE);
+//        HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
+//        if (GameStatus.debugModeOn) {
+//            //attack data for Orc attackers
+//            status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+//        }
+//        if (aWorld[tempRow][tempColumn].getHitPoints() >0){
+//            return;
+//        }
+//        aWorld[tempRow][tempColumn] = null;
+//        elfCounter--;
+//        sortDead();
+//        if(loc[index] != null) {
+//            loc[index].setCanMove(true);
+//        }
+//        if (elfCounter>0){
+//            return;
+//        }
+//        System.out.println("Orcs win no more elves left.");
+//        programRunning = false;
+//        if(GameStatus.debugModeOn) {//gives data for lose condition when no elves left standing
+//            status.elfLoseDebug(elfCounter);
+//        }
+//    } else {
+//        loc[index].setCanMove(true);
+//    }
+//}
\ No newline at end of file
diff --git a/Assignment_1/README.md b/Assignment_1/README.md
index 0ebf17b..1738476 100644
--- a/Assignment_1/README.md
+++ b/Assignment_1/README.md
@@ -10,4 +10,10 @@ Refactor branch 1: De-nesting code in world
 
 refactor branch 2: comments
 
-refactor branch 3 
+refactor branch 3: pulling out methods
+
+refactor branch 4: rearrange classes?
+
+refactor branch 5: new class? for elves and dwarves?
+
+refactor: _ maybe renaming? or getting rid of temp
\ No newline at end of file
diff --git a/Assignment_1/original_code/assignment3GUI - Classmate's/src/refactor_1_testOG.java b/Assignment_1/original_code/assignment3GUI - Classmate's/src/refactor_1_testOG.java
new file mode 100644
index 0000000..f612ac8
--- /dev/null
+++ b/Assignment_1/original_code/assignment3GUI - Classmate's/src/refactor_1_testOG.java	
@@ -0,0 +1,46 @@
+import org.junit.jupiter.api.Test;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.*;
+
+class refactor_1_testOG {
+    private static World world;
+
+    @BeforeEach
+    void setUp() {
+        String simulatedInput = "Assignment_1/original_code/assignment3GUI - Classmate's/src/data.txt";
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
+    }
+
+    @Test
+    void testBoardInitialization() {
+        System.out.println("Test 1 running.");
+        assertNotNull(world.aWorld, "Board should be initialized");
+        assertEquals(World.SIZE, world.aWorld.length, "Board should have correct rows");
+        assertEquals(World.SIZE, world.aWorld[0].length, "Board should have correct columns");
+        assertEquals(4, world.elfCounter); // check if right amount of elves and orcs
+        assertEquals(4, world.orcCounter);
+    }
+
+    @Test
+    void sortDeadTest(){
+
+    }
+
+    @Test
+    void test3(){
+        StringBuilder afterSort = new StringBuilder();
+        for (Location location : world.loc) {
+            afterSort.append(location != null ? location.getType() : "");
+        }
+        assertEquals("OOEEOOEE", afterSort.toString(), "Locations should be sorted with Orcs before Elves");
+    }
+}
+
+
+
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java
index 9e06be4..b4427b1 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java	
@@ -13,6 +13,8 @@
 
 */
 
+// do i make sub classes for elf and Orc?
+
 public class Entity
 {
     public static final char DEFAULT_APPEARANCE = 'X';
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java
index 4ce778c..bf5b57c 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java	
@@ -83,7 +83,7 @@ public class FileInitialization
             {
                 System.out.print("Name of file containing starting positions: ");
                 filename = in.nextLine();   
-	        fr = new FileReader(filename);
+	            fr = new FileReader(filename);
                 br = new BufferedReader(fr);
                 fileFound = true;
             }
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java
index 5ab0e62..4a58933 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
@@ -151,6 +151,7 @@ public class GamePanel extends JPanel implements ActionListener{
 			System.out.println("Cease Fire, Game over.");
 		}
 	}
+	// de-nest
 	public class MyKeyAdapter extends KeyAdapter{
 		public void keyPressed(KeyEvent e) {
 			switch(e.getKeyCode()) {
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java
index affd51e..7ab6303 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java	
@@ -12,6 +12,7 @@ public class Location
         entityType = type;
     }
 
+    // what are these?
     public int getColumn()
     {
         return(column);
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java
index 6484730..f9a66f3 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
@@ -3,6 +3,7 @@ import java.util.Scanner;
 
 public class World
 {
+	// lots of variables can this be changed??
     public static final int SIZE = 10;
     public static final int ORCS_WIN = 0;
     public static final int ELVES_WIN = 1;
@@ -30,139 +31,133 @@ public class World
     // objects in the array. The type of character in the file
     // determines the appearance of the Entity(O or D) or if the
     // element is empty (spaces become null elements)
-    
-    public World()
-    {
-        aWorld = new Entity[SIZE][SIZE];
-        int r;
-        int c;
-        for (r = 0; r < SIZE; r++)//creates each object to null
-        {
-            for (c = 0; c < SIZE; c++)
-            {
-                aWorld[r][c] = null;
-            }
-        }
-        aWorld = FileInitialization.read();
+
+	public World()
+	{
+		aWorld = new Entity[SIZE][SIZE]; // this is null anyway
+		aWorld = FileInitialization.read();
 		// refactor 1 this could be de-nested for readability
-        for (r = 0; r < SIZE; r++)
-        {
-        	System.out.println("");
-        	System.out.println(" - "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+ "- ");
-        	for (c = 0; c < SIZE; c++)
-            {
-        		if (aWorld[r][c] == null) {
-        			System.out.print("| ");
-        		} else {
-        			System.out.print("|"+aWorld[r][c].getAppearance());	
-        			if ((aWorld[r][c].getAppearance() == 'O')||(aWorld[r][c].getAppearance() == 'E')) {
-        				loc[i] = new Location(r,c,aWorld[r][c].getAppearance());//Initializes each Entities location/type
-        				if (loc[i].getType() == 'O') {//this checks the type and counts +1 if it's an orc
-        					orcCounter++;
-        				} else if (loc[i].getType() == 'E') {
-        					elfCounter++;
-        				}
-        				i++;//Cause each initialization of the loc[i] to go to the next element
-        			}
-        		}
-            }
-        	System.out.print("|");
-            
-        }
-        System.out.println();
-        System.out.println(" - "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+ "- ");
-        sortLocations();
-    }
+		for (int r = 0; r < SIZE; r++)
+		{
+			System.out.println("\n - "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+ "- "); // removed unnecessary print
+			for (int c = 0; c < SIZE; c++)
+			{
+				if (aWorld[r][c] == null) {
+					System.out.print("| ");
+					continue;
+				}
+				char currentCellAppearance = aWorld[r][c].getAppearance();
+				System.out.print("|"+currentCellAppearance);
+				loc[i] = new Location(r,c,currentCellAppearance);//Initializes each Entities location/type
+				if (loc[i].getType() == 'O') {//this checks the type and counts +1 if it's an orc
+					orcCounter++;
+				}
+				if (loc[i].getType() == 'E') {
+					elfCounter++;
+				}
+				i++;//Cause each initialization of the loc[i] to go to the next element
+			}
+			System.out.print("|");
+		}
+		System.out.println("\n - "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+ "- ");
+		sortLocations();
+	}
 	// Same here this could be de-nested
-    public void sortDead() {//supposed to try and sort null elements and bring them to the end doesn't always work as intended
-    	for (int i = 0; i<=elfCounter+orcCounter;i++) {
-    		if (loc[i] != null) {
-    			if((aWorld[loc[i].getRow()][loc[i].getColumn()] == null)&&(loc[i+1] != null)) {
-    				loc[i] = loc[i+1];
-    				loc[i+1] = null;
-    				if(i-2 >= 0) {
-    					if(loc[i-2]== null) {
-        					sortDead();
-        				}	
-    				}
-    			}
-    		}
-    	}	
-    }
+	public void sortDead() {//supposed to try and sort null elements and bring them to the end doesn't always work as intended
+		for (int i = 0; i<=elfCounter+orcCounter;i++) {
+			if (loc[i] == null) {
+				continue;
+			}
+			if((aWorld[loc[i].getRow()][loc[i].getColumn()] != null)||(loc[i+1] == null)) {
+				continue;
+			}
+			loc[i] = loc[i+1];
+			loc[i+1] = null;
+			if(i-2 >= 0 && loc[i-2]== null) {
+				sortDead();
+			}
+		}
+	}
 	//	and potenitally here
-    public void sortLocations() {//puts the elfs in the beginning of the array, checks if there is an orc before and elf and if there is it swaps positions in the array
-    	for (int j = 0; j<elfCounter+orcCounter; j++) {
-    		if (loc[j+orcCounter] != null) {	
-    			if(((loc[j].getType() == 'O')&&(loc[j+orcCounter].getType() == 'E'))) {
-        			tempRow = loc[j+orcCounter].getRow();
-        			tempColumn = loc[j+orcCounter].getColumn();
-        			tempType = loc[j+orcCounter].getType();
-        			loc[j+orcCounter].setType(loc[j].getType());
-        			loc[j+orcCounter].setColumn(loc[j].getColumn());
-        			loc[j+orcCounter].setRow(loc[j].getRow());
-        			loc[j].setRow(tempRow);
-        			loc[j].setColumn(tempColumn);
-        			loc[j].setType(tempType);
-        		} 
-    		}
-    	}
-    }
-    public void attack(int index) { 
-    	if(((loc[index].getType() == 'O')&&(aWorld[tempRow][tempColumn].getAppearance() != 'O'))||((loc[index].getType() == 'E')&&(aWorld[tempRow][tempColumn].getAppearance() != 'E'))) {//makes sure it's not attacking it's own kind
-    		turnSinceAtk = 0;
-    		if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-    			HP = aWorld[tempRow][tempColumn].getHitPoints();
-        		aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ELF_DAMAGE);
-    			HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
-        		if (GameStatus.debugModeOn) {//attack data for elf attackers
-    				status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-    			}
-        		if (aWorld[tempRow][tempColumn].getHitPoints() <=0) {
-        			aWorld[tempRow][tempColumn] = null;
-        			orcCounter--;
-        			sortDead();
-        			if(loc[index] != null) {
-        				loc[index].setCanMove(true);
-        			}
-        			
-        			if (orcCounter<=0) {//gives the game an end condition if there's no orcs left
-        				System.out.println("Elves win no more orcs left.");
-        				programRunning = false;
-        				if(GameStatus.debugModeOn) {//lose condition data
-        					status.orcLoseDebug(orcCounter);
-        				}
-        			}
-        		}
-        	} else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-        		HP = aWorld[tempRow][tempColumn].getHitPoints();
-        		aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ORC_DAMAGE);
-        		HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
-        		if (GameStatus.debugModeOn) {
-    				//attack data for Orc attackers
-    				status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-    			}
-        		if (aWorld[tempRow][tempColumn].getHitPoints() <=0) {
-        			aWorld[tempRow][tempColumn] = null;
-        			elfCounter--;
-        			sortDead();
-        			if(loc[index] != null) {
-        				loc[index].setCanMove(true);
-        			}
-        			if (elfCounter<=0) {//gives the game an end condition if there's no Elves left
-        				System.out.println("Orcs win no more elves left.");
-        				programRunning = false;
-        				if(GameStatus.debugModeOn) {//gives data for lose condition when no elves left standing
-        					status.elfLoseDebug(elfCounter);
-        				}
-        			}
-        		}
-        	} else {
-        		loc[index].setCanMove(true);
-        	}
-    	} else {
-    		loc[index].setCanMove(true);
-    	}
-    }
+	public void sortLocations() {//puts the elfs in the beginning of the array, checks if there is an orc before and elf and if there is it swaps positions in the array
+		for (int j = 0; j<elfCounter+orcCounter; j++) {
+			if (loc[j+orcCounter] == null){
+				continue;
+			}
+			if(((loc[j].getType() != 'O')&&(loc[j+orcCounter].getType() != 'E'))) {
+				continue;
+			}
+			tempRow = loc[j+orcCounter].getRow();
+			tempColumn = loc[j+orcCounter].getColumn();
+			tempType = loc[j+orcCounter].getType();
+			loc[j+orcCounter].setType(loc[j].getType());
+			loc[j+orcCounter].setColumn(loc[j].getColumn());
+			loc[j+orcCounter].setRow(loc[j].getRow());
+			loc[j].setRow(tempRow);
+			loc[j].setColumn(tempColumn);
+			loc[j].setType(tempType);
+		}
+	}
+	public void attack(int index) {
+		if(((loc[index].getType() == 'O') || (aWorld[tempRow][tempColumn].getAppearance() != 'O')) &&
+				((loc[index].getType() == 'E') || (aWorld[tempRow][tempColumn].getAppearance() != 'E'))) {
+			loc[index].setCanMove(true);
+			return;
+		}
+		turnSinceAtk = 0;
+		if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+			HP = aWorld[tempRow][tempColumn].getHitPoints();
+			aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ELF_DAMAGE);
+			HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
+			if (GameStatus.debugModeOn) {//attack data for elf attackers
+				status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+			}
+			if (aWorld[tempRow][tempColumn].getHitPoints() >0){
+				return;
+			}
+			aWorld[tempRow][tempColumn] = null;
+			orcCounter--;
+			sortDead();
+			if(loc[index] != null) {
+				loc[index].setCanMove(true);
+			}
+			if (orcCounter > 0) {
+				return;
+			}
+			System.out.println("Elves win no more orcs left.");
+			programRunning = false;
+			if(GameStatus.debugModeOn) {//lose condition data
+				status.orcLoseDebug(orcCounter);
+			}
+		} else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+			HP = aWorld[tempRow][tempColumn].getHitPoints();
+			aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ORC_DAMAGE);
+			HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
+			if (GameStatus.debugModeOn) {
+				//attack data for Orc attackers
+				status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+			}
+			if (aWorld[tempRow][tempColumn].getHitPoints() >0){
+				return;
+			}
+			aWorld[tempRow][tempColumn] = null;
+			elfCounter--;
+			sortDead();
+			if(loc[index] != null) {
+				loc[index].setCanMove(true);
+			}
+			if (elfCounter>0){
+				return;
+			}
+			System.out.println("Orcs win no more elves left.");
+			programRunning = false;
+			if(GameStatus.debugModeOn) {//gives data for lose condition when no elves left standing
+				status.elfLoseDebug(elfCounter);
+			}
+		} else {
+			loc[index].setCanMove(true);
+		}
+	}
     public boolean checkPerim(int index) {//looks at all the spaces around the current index of loc[index] looking for things not null
     	if (loc[index] != null) {
     		for(int r = loc[index].getRow()-1; r<loc[index].getRow()+2;r++) {
@@ -184,6 +179,7 @@ public class World
     	}
     	return false;
     }
+	// these methods could be broken up into smaller ones
     public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
     	if (checkPerim(index) == false) {//checks the perim for things not null if it finds something it returns true and the move code below doesn't run 
     		if (loc[index] != null) {
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java
new file mode 100644
index 0000000..872812d
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java	
@@ -0,0 +1,49 @@
+import org.junit.jupiter.api.Test;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.*;
+
+class refactor_1_test {
+    private static World world;
+
+    @BeforeEach
+    void setUp() {
+        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/data.txt\n";
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
+    }
+
+    @Test
+    void testBoardInitialization() {
+        System.out.println("Test 1 running.");
+        assertNotNull(world.aWorld, "Board should be initialized");
+        assertEquals(World.SIZE, world.aWorld.length, "Board should have correct rows");
+        assertEquals(World.SIZE, world.aWorld[0].length, "Board should have correct columns");
+        assertEquals(4, world.elfCounter); // check if right amount of elves and orcs
+        assertEquals(4, world.orcCounter);
+    }
+
+    @Test
+    void sortDeadTest(){
+        // not sure how to test because the comment just says doesnt work as intended??
+    }
+
+    @Test
+    void testSort(){
+        //in data.txt the sorted array should be OOEEOOEE
+        StringBuilder afterSort = new StringBuilder();
+        for (Location location : world.loc) {
+            afterSort.append(location != null ? location.getType() : "");
+        }
+        assertEquals("OOEEOOEE", afterSort.toString(), "Locations should be sorted with Orcs before Elves");
+    }
+
+    @Test
+    void testAttack(){
+
+    }
+}
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java
new file mode 100644
index 0000000..6485581
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java	
@@ -0,0 +1,60 @@
+//public void attack(int index) {
+//    if(((loc[index].getType() == 'O') || (aWorld[tempRow][tempColumn].getAppearance() != 'O')) &&
+//            ((loc[index].getType() == 'E') || (aWorld[tempRow][tempColumn].getAppearance() != 'E'))) {
+//        loc[index].setCanMove(true);
+//        return;
+//    }
+//    turnSinceAtk = 0;
+//    if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+//        HP = aWorld[tempRow][tempColumn].getHitPoints();
+//        aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ELF_DAMAGE);
+//        HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
+//        if (GameStatus.debugModeOn) {//attack data for elf attackers
+//            status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+//        }
+//        if (aWorld[tempRow][tempColumn].getHitPoints() >0){
+//            return;
+//        }
+//        aWorld[tempRow][tempColumn] = null;
+//        orcCounter--;
+//        sortDead();
+//        if(loc[index] != null) {
+//            loc[index].setCanMove(true);
+//        }
+//        if (orcCounter > 0) {
+//            return;
+//        }
+//        System.out.println("Elves win no more orcs left.");
+//        programRunning = false;
+//        if(GameStatus.debugModeOn) {//lose condition data
+//            status.orcLoseDebug(orcCounter);
+//        }
+//    } else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+//        HP = aWorld[tempRow][tempColumn].getHitPoints();
+//        aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ORC_DAMAGE);
+//        HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
+//        if (GameStatus.debugModeOn) {
+//            //attack data for Orc attackers
+//            status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+//        }
+//        if (aWorld[tempRow][tempColumn].getHitPoints() >0){
+//            return;
+//        }
+//        aWorld[tempRow][tempColumn] = null;
+//        elfCounter--;
+//        sortDead();
+//        if(loc[index] != null) {
+//            loc[index].setCanMove(true);
+//        }
+//        if (elfCounter>0){
+//            return;
+//        }
+//        System.out.println("Orcs win no more elves left.");
+//        programRunning = false;
+//        if(GameStatus.debugModeOn) {//gives data for lose condition when no elves left standing
+//            status.elfLoseDebug(elfCounter);
+//        }
+//    } else {
+//        loc[index].setCanMove(true);
+//    }
+//}
\ No newline at end of file
diff --git a/out/production/501-gitlab/Entity.class b/out/production/501-gitlab/Entity.class
new file mode 100644
index 0000000000000000000000000000000000000000..1a7225408c2d8713f9069a3d35ecc3c6127ad800
GIT binary patch
literal 1769
zcmZuyU2_^`7(Fj65a=dB(qPjhO4U}fZG&m8U#Y3MAq`3b4U|cHVcgIix)qiTEIR!=
z-gx7Uj)^l~_yhb=PS3Nu4Vw%%?4IX&pL3qCclq!CfBpqv;%Npk#8c38B#>0dzOsI{
zN<GW%mg>i^?2f09eCW82x1|s-uC>#cK{|zujw{gVtGJ%yy;ewDo@aG_a@?+hdY<8_
zIUV!JD$I^-uY7W1TSLq3*a}+FTx-jLoQ?%tRnU20*YO$y$Mr_yuLd%C9q;0rLdJ?j
zD^oJKu45T1RDC&#Q&sW2r{jI`Bwtv4t80tS4ILkdPMSK~zBP@Ha5IHlIzC46Le0(B
zBhT)$)WMjQFV_5SID=AS$mE*d(6;)UGcXjE1ExZMJn{<1c44D17#6zpd-gDcJGh&|
zx{eY)QCOHlqL4Zf%AQM=Vj$x;of_=n=2}}Jw_VvOKdrTn%8f>)d{EvuE9|B@a7Uiy
zdTpyWw&R@PA+xR2cI1`*L}jnhdM2Pid;P$a*E*Z{mTb2n7DWr4N89DS^5cqF;<S(^
zVo9-!awdq#$gt@T&^+g44qkAa^EJn{_s9KXd)Ts$d$i<ggO1f}TSG^1Xw<xy4u?Ba
z3l?URmALjV(Y;6(%_=9)eV`+<4{5@n*^KF4+$C<L$-&b4_5>|eQqU5im~F~#?pY^c
zGMVOJJnYyzj--1f$Y@=rgd5zK7`rixC2Zgt6z&nlaG&_o2!25PSp<Jh{6z$RN&FR7
z&f_<UA4c%k#9I;ki1?cbE)#zn!6tLyW$<(1=KD|XIiHY=$lo-zc!T-7O;qQ3#pj~&
zH<S@SMasw?o?+I|&hXA3bi`2MZ=NCGWzcv-(zwYBdka^2DRyYp0|Gq8E|HLDLvoAJ
z(xjyc`SK~Hv{Rarr&yf`TxUjr5enSK9IwU#?y{0~UnCz8g(9Rx)$gLneHY4&c}BY=
zC#9^Op<t|Bs3(xy2<7fk?mp#Ya1VSrNkl|~nkI7c_C4F_SA`ni;uPP*ewaduPibeu
z_zR1_^Cf7XbQ_%Gq+N;gcGc0C61;jj*qj>tWNPrz<>1|^!Tjom%3I7+N=h0spUG6@
zn-7+kV1bf*FoooKTaw`vV)Ee(xqb|}^2^$<nEMkS=GM+|`!~!8w?FZ?zfw8B#RueW
yF^@wm;(0_Pf3A`D+pKUveGRd!MjiegOv`-fa^^pf{V2j3&0NMP!)lT@hSnPki2kww

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/FileContainer.class b/out/production/501-gitlab/FileContainer.class
new file mode 100644
index 0000000000000000000000000000000000000000..2ecbbcf4ff40baf66ca4ce50e0e643693e3c1f2d
GIT binary patch
literal 696
zcmZuu+fKqj5ItK86=(%20^<D*s<9t{@j()wh$d=CeB8o<CACdz@w+sUnE2oa_)*5$
z(v(ZcCNr~V&p9)h{r&s?0no*90SYo2R2^C57|Ij=#%+)LWBbmTh(W}VyL5dwx?;$*
z+WkDXkk?SqQH0K5+_;|T27bg{UxW;bL!r@&P29k~o{mN$6vKPLha&7q@wSc<%ETNI
zvzjucPr_obTPeQgkm5`HcAr7*21CJ6>d_dt(-%jCkKFMHF?+#)dwm|d@}7Wd^z6P$
z_R91fLilPwh9X~dVyKKow9aU@+UZoQZ)9kYVA-IyL|))TEIb6$a3CZ`L(7zI^+IkF
zr?fkTzD%J*tB)&MB;^bk{auBkNw+8YpOj117npT6gJzx2V0^@a9f~GYibaY#@-VPX
zr%K4lT!vlL=tc&p6NAN7gBmGR@1dEru_?>9tn~@)oeBlgJQsszY&aKZ6GMi59BdF9
N>*D%G@nPKJ=pUq3h^7Dl

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/FileInitialization.class b/out/production/501-gitlab/FileInitialization.class
new file mode 100644
index 0000000000000000000000000000000000000000..55f7e6375b1e5bf7b59a8bef35d2a4ca2d887255
GIT binary patch
literal 3374
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
Oy$IL8#qaS4bpH?FS0EYy

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/GameFrame.class b/out/production/501-gitlab/GameFrame.class
new file mode 100644
index 0000000000000000000000000000000000000000..3144fff124a737ed4b425d223ca68a638f4aac0a
GIT binary patch
literal 641
zcmZuvU2oGc6g_UzrcJ#Mx^KqUfNiM<%?~KrOQ#`F1!%2;;LU3dcuSKiaks(0+Dj%4
zi66j^LR`1io+c~T@jb`q9$)+KzuP|mItYD~;COI3%BV0j&g6x>3iC^yd=K9rXL6(%
zDsOb6%^`ymG$RjHhT2;KKFLJIK0G)+>fjz0I2N%qN9TJTIUF*GplgLgd1=B<IvS^m
zN=&<XU$Tk^4CP)T&y|&3;aJ5QLp4{XuT4yL*5+cdB#%9lk=1rHvg8epO>8l268T7d
zlattV;xtzu$10OXrwM}_yqj^iIUeCL11Ii@%JnaKYQ^2)>kNO&@yy~r;gQZYp|-?x
zju*C3?pO}aZDN;W5Bubbc-?d`Epwt`nlDs8W!Sj?=n+YD(jiq`>gq&&n2b(U)}MK3
zSe-bMnYQbB(ltMH&QR~#)=!(;CUd=Xk`2_cw$>N#kd|#WcF0|cZW&<o(e=_C(BDru
z(@ZFCz{GEOUv5w<;C~j4<pK>+DX=cw0uOC?A`0vXR^a6|Z7rcmaSt_$E{!slNp_vy
gz&5JXuNrpY6Q_<A79fblXQgm}SF~byO|gX5e|}1ci~s-t

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/GamePanel$MyKeyAdapter.class b/out/production/501-gitlab/GamePanel$MyKeyAdapter.class
new file mode 100644
index 0000000000000000000000000000000000000000..d10864080b129a4b78920b5ddbc727c517cc5e25
GIT binary patch
literal 1197
zcmZuwTTc@~6#k|ZmM#mFQf`V`6}2rw!3!uw6uC<a#FCOIF9RLRO1n#Tryy_s4PuP?
zgx5q7G4a7CpZrnAGh0$2_%JhjX20{D?_B2hpC3N~jA1SSAF4F?4OF9sp>>KE#R9iP
zp)0*TE4D{-d_xL{p+>HmZdV^eU8({}>ZnCPgKnS>21CbFzR44OOD4pouw>$x|FCJ9
za)hBO8q4ZvK%<7BfhL3)+D`gSC;|pOFC?*y**W2P&IAxfi-uMMZD?l*RJ1TuZ`n>E
z$DpN_)JHOaQ#h@m)4&;=rQhByL&Jt+=N(>rSh6hB$}_M>iZo*2JT4GSnnjgwb4rPN
zmT<QSlvq@klx`O;X}E0Qib}WX1cKaM$sHL$3~>$J2Ck~mx>A{uT$Ws_Urwx)@@dLw
z-U^@>2@QP)`f-gR=+&XXDPU&Xm7+*F+a)SPizg;w+KC0nv}8s)f)|suxWUjkuIM5~
z;)@i-6RBeWgBorbxQ!u7!=pUzNF~}(GzE*8qh;!HP)XPMWGq{YVTRBVW@?6T1QoX-
zdZhiaEQ7z?o5qxBiMdj7ML3Imr9j;ZrR-H+$a2S2_Ti;pO%X%;Kayi(mZTb_g<P|9
z3!GXcC@7)zb+NtR2-j5tIu8XOn=)@&NH;Z;B6pNi`VWGkp4zawp5_~eg7l1Ca#qEp
zsU$a4rm0tzjiGi<xN_QdsRhQ2WeI1jz)1#aGLF6unj9a!1b_vD>KW0O57cSgp>u?+
z5juTz>hbPxVDazJzId3swAT<4c!7Jgx0X>D#eK2}@3Ap@r$9Bqo(Bm$jtSZo?XN@H
z<?aL2e^3s<5-k-fLaUS3IIV&BKG;5*_tCL~{<3lI02g=BwTI{qLVM^5T|dChs;`Ld
zqEVSiGW}#Kp;b^qdnqB{B{9E34_;#sZ!m;i68;v`c!w0;V;&z#!6!V%=OYO%R}xyr
jB&JCHG%?k{AL$6!5&H~TK0LszcZP{crOxOsj5OF^OsWjH

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/GamePanel.class b/out/production/501-gitlab/GamePanel.class
new file mode 100644
index 0000000000000000000000000000000000000000..8c927200acee848167a852912edf89ec881e9072
GIT binary patch
literal 4923
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

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/GameStatus.class b/out/production/501-gitlab/GameStatus.class
new file mode 100644
index 0000000000000000000000000000000000000000..81e4ad5b6588f9e5771169ebc0c5d7378d199585
GIT binary patch
literal 2785
zcmb_dZC4vb6n+K**`xv5w4szjyOdy|t&K1Bt;A@X(t?J9rBb!NEt>(hY<A=B23!5+
zukdfE=ctDd{s4cJ$7g0YFF^2kJaP_q@66nJ?sK2HGx_tcgFgUN@qHEp7)&FT!w`lA
zPCv8ut&(ebJEgU)XVQ)YhRcrUL=}O-`Gw643}n*C=5PwRL*W}Q!bmn4<+r%0P}4w;
zUs?|wFWQI#X*CuNj0$9zoiLm+*Zt;97N>D0jeHJgaZccDpFINUrb2K%g3iaNnjRq?
zZ)b5~)4;gERJm+Lk!A0h4H@nFb<?(7SJq8Guq%~3OP$E!0wx8{H>^Eb^*!5)o;cAi
zy)d%8C=?i<Us+i=o*)l_i9A)BRtT3Ai~eDQm^LsYV4gr_+Ye0XZYw$|g*c?lFsAcJ
ztDRR_f4RIC*k;4umkECrY^b;lCJbEHAxrM|(U7bPIi;X-n9kr8yqd;qIlPWrl>33z
zkQ<Q|wOHe+y4-5*ton7iMm@!60;wto0%JADlMh>sEg3wvwp`BSYd$sHv;s$slgU)H
z>kuYa>w+!{jL7F!qv`4_jx8`s)$i!jxTn$yWGJorTiE1rvP+te{BN0lB^gzHmu<%L
z)6>e)Gnri{YWh5TW*qJKceW!LaDq}E%8_HzRVtUHOzV^?;jr)4V_-TOIBU0pKzeby
z_CT-Xh}r|9Fl&C;#!T_#321P(>bE?$xr*-zFgQ$BjI!+}_a?jHw*p(<ca*GSUFB}7
zcIO?s>-$j{1y*xaw{B>FNeW9m=6iBmdUY9?LCL;tijpw!2^)2dO+t~_?J@{^)_9zg
zYFj<o7MdN^xZA+z0&^#<o0gI_L1pNdWT4Wtp?b1>O$G|3AA>D2=-qadL7favSU<{O
zo64wA9$HWGU4b*|fa+%C_e?)yu;O$$m|ZnXh|qNXFuGx8O%ASxrsX>7f~gafffj~$
zVV2vwflKbbJRUeUjAj<!AV?!rj{zH?*nKY@Z{OdOrTATnUzq!r9r?ivfggKct|Tx%
z?PbfWyD}`+e1EUiTs;2%^voRE`1nOr_6dL56Cc0ei@lFp0#W7bxZy;Smp8ZKc`~TF
zRv5}K4c^PSV>R`ong;8-^v|KZd~scv;iELbXP9q+dY0&A=<_Fs_6?3o{0e@DuKfn_
z6P*FPNvoEDLA*tqiv#dB-r*>N+nvpG8k%!IBb^`l6=MoOXaM!|rh*M*IkSi|t;+X1
zLDT$J)RqFb@OyFU0Ox^tFkMI;;9`4J7&^dIXE1z#%X-iyI!Q8$qJa?<Fp61>vEtKs
z7iTp2<v3eHo_V=a(FIlT9zDgfg7^79sJ%P%Qrf#qZ%BJpdP<Oc{i`s$Ra|LP)m6;4
zN2-cqXTU1v`c`q4Rh(lL1y(W6D$bMZ#Q$E!67DBw@dImC6&BT5ywt5?zD-qEv2cW|
z`V|Ex$@L<cPLb<n&GA-@)ls^L2h>fqQ4!1Zl+s14&{Ikm@d3RQ*FWsf=USJ~jeo&s
zhJ3DQ<z}g_YTN(Hr-s!;pCxiutVdLj9^mC8Lc}e8mCZM=6OPBh9RWu0PzxZib`s>x
zzL3`ldHn>)bq#6Yqs}Fq)*AB$5B`Eu_X5T@c!**@VhID-z+-;bc};w7_*mN~+J36-
kQ*FP{_A6~IZEbC(wmaH7+U{xFK#QpAitpn&zQcvT0nQsd{{R30

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/Location.class b/out/production/501-gitlab/Location.class
new file mode 100644
index 0000000000000000000000000000000000000000..802582b623ee6e0f7bbbf0e97423d36954b100e3
GIT binary patch
literal 1160
zcmZ`&O>YuW6g>}ynKBOjptUWu)ne5SV_Vd%rW+Cy64XQ+7VHL`)M;SG(4kHLlN%F>
zi3@*#KgxLSgHb|;&3pHqx%b?2&xPNAe*OZ`#7i4F<SiHu3NRJculyUoG4P|y#{1q?
z&`%W1*I^VU=L&hZ-YH@QMGLlrdvFw1+Hv1c!Z=c}`hN5_z6lgmSF%<etYMv1qxhCs
zOR%zoO~K55JQxonf$lrl#*Ts=L`j(3UEF;Uh9+~|R;yX>C>YK76S1{+7zOXf!(K4D
z@OuLyWobU>_@hwXGtfvrhu5TQr^;TDDhh5th>9YErfyBzM7Jtl21yEWz!tNK=xmF@
zR1ZH;k#(KE4Oc6(2{hBG4Y#Y+4z&li(59bQ-eq&iPMf<eNj3@TR`$nuJn9E;LYb?S
zN<WijphlN+T$aI;jxx%Li~6Q@`sOlt7ooVtU7i)b#>_K#SG*rko-u*t?M+bf_9xiz
z4kp<8rc0|lt1x*MnQrm4vC8dkl5!U%?D2~?CBi-q_#!19P=M0WLq;O6f<ubQ6RqLV
zOhSXVWEH&c*!apI$5vo70n3`&nI_Dr6^=5CON+%jnZ=Lsgmg0eeCMsj;%a8`QykBV
z&#6;JGR3eto8-R&T2SElV$1e4>z^&Awm?R9QP1MC{#!ofIwV(Z375wO2-h>5%(&)<
wvKEIr${gwxXIVlv7KI#Bh`U6HY*>Uevbjo&Tqoo@UBWf}-6%Y#eL1}N3j)%JSO5S3

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/Simulator.class b/out/production/501-gitlab/Simulator.class
new file mode 100644
index 0000000000000000000000000000000000000000..04efb73c6b631a816f41e51649085a1e51f9e344
GIT binary patch
literal 402
zcmZusO;5r=5Pee$rKJLb!a*<Iz=J({z<43SOQVOH8slkOo4TYQ$=dS2JdtSP5Aa7B
zXTg96_wXk3-o7_8U*GSa0OlAwFwn4Ix@e+B=r6@ec$p|t?=D&<aYbld$wF4wgvMkV
zT4)pO8<8gq#o)lw?hbQ-%<D{4r6QQ~@;M>&d|4#7bsi<^UPKu)1HX(#778VG|4W+H
zi+m+?{9VF~BXS`N!f5j3?>7o6C5v=64Otf|Wz+B<ncxIvt>R=M^~~-r_ChD&4EkjK
z43IvW(dEwLN?e=gYtY+9K48=`Fh-Zr-F`q1eeP@=V!(_xUv9#f`+)VhhW)S)*iJh^
S8>fFlYz%S4M#3?pfzb~o5=$2V

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/World.class b/out/production/501-gitlab/World.class
new file mode 100644
index 0000000000000000000000000000000000000000..0e7ce70287ebd826cecad6540b22e7a9a55e6078
GIT binary patch
literal 5400
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
K#~*n&9ra(2iv}(L

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/data.txt b/out/production/501-gitlab/data.txt
new file mode 100644
index 0000000..58bedd6
--- /dev/null
+++ b/out/production/501-gitlab/data.txt
@@ -0,0 +1,10 @@
+          
+ O    O   
+      E   
+      E   
+      O   
+      O   
+       E  
+         E
+          
+          
\ No newline at end of file
diff --git a/out/production/501-gitlab/refactor_1_test.class b/out/production/501-gitlab/refactor_1_test.class
new file mode 100644
index 0000000000000000000000000000000000000000..6275ddd1152249ce19a35ebb157eb5a82215c4c6
GIT binary patch
literal 2637
zcmai0TUQfT7~LlqCd3gjh=^J`Xba&Q(blS1TY|yH1`t84r7azj0R|^CaWVn1H``ik
z@Bg7MKG$|BtFFakANmveL;6^{&m@6>*gj-t&TXIl?Qfs&<j;S8Uk5OZpP~pLs34>w
zj5>kFC4E^>Sh~HC7@u1*vYtTQdDAw%3j)D-*K`CCflEWhqPbw_4cnU?NVvwlp7k8p
z$jxS*oRQEs2TxtPme%^TVT)aP-7`9iiK3fL<aAH(_ilU9dPK2DfvRFJ8n*2{xmxs$
zyg<OT1)4KHDbq=$?Lx_$^jt&F4=QLBI9eS^u6o9h>*}jDQ=*8WNx=aX%{aIn-g8ZR
zK_IeVcyeV?AQbPKNk*{`holm%0^#^fvTHg@ibqr&#S82y8eW=w4#jsR)HSW(Mb5hJ
zxK=KTHU#T&4969`q~c|C2<)pWH9IiNJt=K?Ma~saGXA1LDM(yJ7rLpoQ{s%R*sqXs
zHTDR42{%OyZ9sENw#{hzqv%IM!3h-uI4RInm8NDPcPdC2OR8Fl!p}7|CB$IYbUk^$
zqT*GYX5w|9l|Xc6CX=!~(_0;k;EceLq@%kzt+?ovteiGyXwo32Zkcxs27V6A&3P5C
zgPzeGcOkJ<;y9lL(=*(JUN93hkl}i!V^jIPbO#$_jyG1aEP>8iVr3H!mIdEVHG($<
z+O|<y)Rzq{>$onBtGUifQL;&@^!Y^rwY*R2R!O(GZA(0z-W_&Cp#Ax<S;s2n?V=Rw
zEfr~8rap!>KkSrjMkgTBa?_05bX2-1oi3|7uHuS6*>SU#$qKHL$JU7}XCYZKt(@UT
zF(Dn)hHEOOah-;+oUFi}nM}sX>QcMGC~n|g1v4t%!~1k|b%1H6v8PrGhJR>>qnO2q
z3Un27AVk?2zL>*{y34~Wc`M7hRWiosrN4)}YLwZW!{if?7M;L?iba^xB87rs)4_ea
zB&`-?TWAEjNxI|Xsg(Rlz`P0@4m&-kJXPR8{8<35yd^MD4YXL}!J^}OMowEXy+v)@
z%@*m)c@`xtWi1=N4~jA+JW^+Op;{B}e>jd+Vwe?<M=xXA##kvoXSh@PoW-7)q-0I&
zt|{A<&XBig(rNoMI}ZL}xt3fj2s9MUe92;M%=v{&0`2qzXCHK2bHTKAt6Ue;HZ@`m
zq(<A9SG(KFAgq|X)kOlfUZq>jyfJMSP4XSGZO8LHMY_i_yPw&luV+fnE)t+c7BK&i
zq^oD&U(b^KoaM4waiJ>nbkWdrvMuw?*Cf06X;pm91GVLGfqH$O1})ENeMX(iX(967
zNl(w-9MucH`ieX<QHeg}$$mB_osye1MogKn13OaEFI9)ef*s(!$jP!~^Q(?OUX1K1
z@hibMPXNN*PauBbM*z!w%3(mk3ZH6u0&ZiKE#MAE1ODRs2qMIuj+l~pg!<8^*mtAn
zG4?+}%UItU4nIZPjVI84MSCw>Tj*^>mbgLQk_sBo#7n9LjcCVyl8pJgc9)SWy9RL_
zAK_y%;f;h(xF*0=P52a_5#=t?B;(Kd2EN$j_kd$Ej*&;`jFDL1Beeg9Q?b|9aJDg8
zZmh@NSi?}Y6+F2fOR=r^gO}FucKK_JUpx69M1-uHaEQEHc|#q>AdVo#n{`XIkqZC2
zWFZ-T$v1FslVJ~AlHoJbx7UD(T|vIu1o@j`%B)^~iV5mH$y_kZsnOo`3&GQ&=Fkg2
zqocPubn;xdr#1Ws8d}4T@y;4Pc!+Q;_Zain?}fy}jlW_`l*oz|*5JxegT4_C`^X&(
zwUc4Safa^;=;kfa<1^Gaubnd7$JcZfIaIhtki-Lg!{EMU?-W8C{L2zna7@93g6{-_
z-k?%-H9ZPzzu@o&7wzm1_{#zts0TkK2vP6yw<YTLn|eG~)D!<Bs=yC~4B*Fq0WwN*
ANdN!<

literal 0
HcmV?d00001

-- 
GitLab


From e0863597e3e809388191adf14b843be33559d112 Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Sun, 16 Feb 2025 21:08:05 -0700
Subject: [PATCH 03/17] finished refactor 1 and the tests for each also
 compared it to the original. The refactor_1_test is for the new version and
 refactor_1_testOG is for the original but they are identical and the results
 showed the same. All tests passed

---
 .../src/refactor_1_testOG.java                |  90 ++++++++++--
 .../src/World.java                            | 131 ++++++++++--------
 .../src/attackTest.txt                        |  10 ++
 .../src/data2.txt                             |  10 ++
 .../src/refactor_1_test.java                  |  83 +++++++++--
 .../src/reworks.java                          |  74 +++-------
 .../src/reworks2.java                         |  39 ++++++
 out/production/501-gitlab/World.class         | Bin 5400 -> 5455 bytes
 .../501-gitlab/refactor_1_test.class          | Bin 2637 -> 4846 bytes
 9 files changed, 302 insertions(+), 135 deletions(-)
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/data2.txt
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java

diff --git a/Assignment_1/original_code/assignment3GUI - Classmate's/src/refactor_1_testOG.java b/Assignment_1/original_code/assignment3GUI - Classmate's/src/refactor_1_testOG.java
index f612ac8..49d19d4 100644
--- a/Assignment_1/original_code/assignment3GUI - Classmate's/src/refactor_1_testOG.java	
+++ b/Assignment_1/original_code/assignment3GUI - Classmate's/src/refactor_1_testOG.java	
@@ -4,21 +4,33 @@ import java.io.InputStream;
 import static org.junit.jupiter.api.Assertions.*;
 import org.junit.jupiter.api.*;
 
-class refactor_1_testOG {
+import java.awt.*;
+import javax.swing.*;
+
+class refactor_1_test {
     private static World world;
 
-    @BeforeEach
-    void setUp() {
+//    @BeforeEach
+//    void setUp() {
+//        String simulatedInput = "Assignment_1/original_code/assignment3GUI - Classmate's/src/data.txt";
+    ////        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
+//        InputStream originalSystemInStream = System.in;  // Save the original System.in
+//        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+//        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+//        world = new World();  // This will call FileInitialization.read() and use the simulated input
+//        System.setIn(originalSystemInStream);  // Restore the original System.in
+//    }
+
+    @Test
+    void testBoardInitialization() {
         String simulatedInput = "Assignment_1/original_code/assignment3GUI - Classmate's/src/data.txt";
+//        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
         InputStream originalSystemInStream = System.in;  // Save the original System.in
         ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
         System.setIn(simulatedInputStream);  // Set System.in to the new input stream
         world = new World();  // This will call FileInitialization.read() and use the simulated input
         System.setIn(originalSystemInStream);  // Restore the original System.in
-    }
 
-    @Test
-    void testBoardInitialization() {
         System.out.println("Test 1 running.");
         assertNotNull(world.aWorld, "Board should be initialized");
         assertEquals(World.SIZE, world.aWorld.length, "Board should have correct rows");
@@ -29,18 +41,76 @@ class refactor_1_testOG {
 
     @Test
     void sortDeadTest(){
-
+        // not sure how to test because the comment just says doesn't work as intended??
+        //but works in gui
     }
 
     @Test
-    void test3(){
+    void testSort(){
+        String simulatedInput = "Assignment_1/original_code/assignment3GUI - Classmate's/src/data.txt";
+//        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
+        //in data.txt the sorted array should be OOEEOOEE
         StringBuilder afterSort = new StringBuilder();
         for (Location location : world.loc) {
             afterSort.append(location != null ? location.getType() : "");
         }
-        assertEquals("OOEEOOEE", afterSort.toString(), "Locations should be sorted with Orcs before Elves");
+        assertEquals("OOEEOOEE", afterSort.toString(), "Locations should be sorted like this");
     }
-}
 
+    @Test
+    void testAttack(){
+        // create world and tell them to attack
+        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
+
+        world.tempRow = 0;
+        world.tempColumn = 0;
+        world.attack(0); //elf will attack
+        int Hp = world.aWorld[world.loc[1].getRow()][world.loc[1].getColumn()].getHitPoints();
+        System.out.println("health after attack: " + Hp);
+        assertTrue(world.aWorld[world.loc[1].getRow()][world.loc[1].getColumn()].getHitPoints() < 10, "Orc should lose HP after attack");
+    }
+
+    @Test
+    void checkPerimTest(){
+        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/perimTest.txt\n";
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
+
+        assertTrue(world.checkPerim(0), "should be true, something next to the elf");
+        assertTrue(world.checkPerim(1), "should be true, something next to the orc");
+        assertFalse(world.checkPerim(2), "should be false, nothing next to the elf");
+        assertFalse(world.checkPerim(3), "should be false, spot is null");
+    }
+
+    @Test
+    void testMove(){
+        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/moveTest.txt\n";
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
+
+        assertEquals('O', world.aWorld[0][0].getAppearance(), "should be an Orc at 0,0");
+        System.out.println(world.aWorld[0][0].getAppearance()+ " at: 0:0");
+        world.move(1);
+        assertEquals('O', world.aWorld[1][1].getAppearance(), "should be an Orc");
+        System.out.println(world.aWorld[1][1].getAppearance() + " at: 1:1, from move function" );
+
+    }
 
 
+}
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java
index f9a66f3..f10c667 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
@@ -84,7 +84,7 @@ public class World
 			if (loc[j+orcCounter] == null){
 				continue;
 			}
-			if(((loc[j].getType() != 'O')&&(loc[j+orcCounter].getType() != 'E'))) {
+			if(((loc[j].getType() != 'O')||(loc[j+orcCounter].getType() != 'E'))) {
 				continue;
 			}
 			tempRow = loc[j+orcCounter].getRow();
@@ -98,10 +98,14 @@ public class World
 			loc[j].setType(tempType);
 		}
 	}
-	public void attack(int index) {
-		if(((loc[index].getType() == 'O') || (aWorld[tempRow][tempColumn].getAppearance() != 'O')) &&
-				((loc[index].getType() == 'E') || (aWorld[tempRow][tempColumn].getAppearance() != 'E'))) {
-			loc[index].setCanMove(true);
+	public void attack(int index) {// new
+		if(aWorld[tempRow][tempColumn] == null){
+			return;
+		}
+		if((loc[index].getType() == 'O') && (aWorld[tempRow][tempColumn].getAppearance() == 'O')) {
+			return;
+		}
+		if((loc[index].getType() == 'E') && (aWorld[tempRow][tempColumn].getAppearance() == 'E')) {
 			return;
 		}
 		turnSinceAtk = 0;
@@ -158,61 +162,66 @@ public class World
 			loc[index].setCanMove(true);
 		}
 	}
-    public boolean checkPerim(int index) {//looks at all the spaces around the current index of loc[index] looking for things not null
-    	if (loc[index] != null) {
-    		for(int r = loc[index].getRow()-1; r<loc[index].getRow()+2;r++) {
-    			for(int c = loc[index].getColumn()-1; c<loc[index].getColumn()+2;c++ ) {
-    				if((r <= 9)&&(c <= 9)&&(r > - 1)&&(c > -1)) {//ensuring r/c is in aWorld
-    					if((aWorld[r][c] != null) && (loc[index].getType() != aWorld[r][c].getAppearance())) {
-    						
-    						loc[index].setCanMove(false);
-    						tempRow = r;
-    						tempColumn = c;
-    						attack(index);
-    						return true;
-    					}
-    				}
-    			}
-    		}
-    		loc[index].setCanMove(true);
-    		return false;
-    	}
-    	return false;
-    }
+	public boolean checkPerim(int index) {//looks at all the spaces around the current index of loc[index] looking for things not null
+		if (loc[index] == null){
+			return false;
+		}
+		for(int r = loc[index].getRow()-1; r<loc[index].getRow()+2;r++) {
+			for(int c = loc[index].getColumn()-1; c<loc[index].getColumn()+2;c++ ) {
+				if((r > 9)||(c > 9)||(r <= - 1)||(c <= -1)){ //ensuring r/c is in aWorld
+					continue;
+				}
+				if((aWorld[r][c] == null) || (loc[index].getType() == aWorld[r][c].getAppearance())) {
+					continue;
+				}
+				loc[index].setCanMove(false);
+				tempRow = r;
+				tempColumn = c;
+				attack(index);
+				return true;
+			}
+		}
+		loc[index].setCanMove(true);
+		return false;
+	}
 	// these methods could be broken up into smaller ones
-    public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
-    	if (checkPerim(index) == false) {//checks the perim for things not null if it finds something it returns true and the move code below doesn't run 
-    		if (loc[index] != null) {
-            		if (loc[index].getCanMove()) {
-            			if((loc[index].getRow()-1 != -1)&&(loc[index].getColumn()-1 != -1)) {
-            				if ((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()-1][loc[index].getColumn()-1]== null)) {
-                        		oldRow = loc[index].getRow();
-                        		oldCol = loc[index].getColumn();
-                        		loc[index].setRow(oldRow-1);
-                        		loc[index].setColumn(oldCol-1);
-                        		aWorld[oldRow-1][oldCol-1] = aWorld[oldRow][oldCol];
-                        		aWorld[oldRow][oldCol] = null;
-                    		}	
-            			}
-            			if((loc[index].getRow()+1 != 10)&&(loc[index].getColumn()+1 != 10)) {
-            				if ((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()+1][loc[index].getColumn()+1]== null)) {
-                        		oldRow = loc[index].getRow();
-                        		oldCol = loc[index].getColumn();
-                        		loc[index].setRow(oldRow+1);
-                        		loc[index].setColumn(oldCol+1);
-                        		aWorld[oldRow+1][oldCol+1] = aWorld[oldRow][oldCol];
-                        		aWorld[oldRow][oldCol] = null;
-                    		}
-            			}
-            			if ((GameStatus.debugModeOn)&&(loc[index]!= null)) {
-                			if (loc[index].getType() == 'E') {//elf move data
-                				status.elfMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
-                			} else if (loc[index].getType() == 'O') {//orc move data
-                				status.orcMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
-                			}
-                		}
-                	}
-        		}
-    	}
-    }
+	public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
+		if (checkPerim(index) == true){ //checks the perim for things not null if it finds something it returns true and the move code below doesn't run
+			return;
+		}
+		if (loc[index] == null) {
+			return;
+		}
+		if (loc[index].getCanMove()==false){
+			return;
+		}
+		if((loc[index].getRow()-1 != -1)&&(loc[index].getColumn()-1 != -1)) {
+			if ((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()-1][loc[index].getColumn()-1]== null)) {
+				oldRow = loc[index].getRow();
+				oldCol = loc[index].getColumn();
+				loc[index].setRow(oldRow-1);
+				loc[index].setColumn(oldCol-1);
+				aWorld[oldRow-1][oldCol-1] = aWorld[oldRow][oldCol];
+				aWorld[oldRow][oldCol] = null;
+			}
+		}
+		if((loc[index].getRow()+1 != 10)&&(loc[index].getColumn()+1 != 10)) {
+			if ((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()+1][loc[index].getColumn()+1]== null)) {
+				oldRow = loc[index].getRow();
+				oldCol = loc[index].getColumn();
+				loc[index].setRow(oldRow+1);
+				loc[index].setColumn(oldCol+1);
+				aWorld[oldRow+1][oldCol+1] = aWorld[oldRow][oldCol];
+				aWorld[oldRow][oldCol] = null;
+			}
+		}
+		if ((GameStatus.debugModeOn == false)||(loc[index] == null)) {
+			return;
+		}
+		if (loc[index].getType() == 'E') {//elf move data
+			status.elfMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+		} else if (loc[index].getType() == 'O') {//orc move data
+			status.orcMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+		}
+	}
 }
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt
new file mode 100644
index 0000000..d96c03d
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt	
@@ -0,0 +1,10 @@
+O         
+E         
+          
+          
+          
+          
+          
+          
+          
+          
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/data2.txt b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/data2.txt
new file mode 100644
index 0000000..925cdc3
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/data2.txt	
@@ -0,0 +1,10 @@
+          
+ O    O   
+      E   
+      E   
+      O   
+      OE E
+       E  
+         E
+          
+          
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java
index 872812d..04413b8 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java	
@@ -4,21 +4,33 @@ import java.io.InputStream;
 import static org.junit.jupiter.api.Assertions.*;
 import org.junit.jupiter.api.*;
 
+import java.awt.*;
+import javax.swing.*;
+
 class refactor_1_test {
     private static World world;
 
-    @BeforeEach
-    void setUp() {
-        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/data.txt\n";
+//    @BeforeEach
+//    void setUp() {
+//        String simulatedInput = "Assignment_1/original_code/assignment3GUI - Classmate's/src/data.txt";
+////        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
+//        InputStream originalSystemInStream = System.in;  // Save the original System.in
+//        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+//        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+//        world = new World();  // This will call FileInitialization.read() and use the simulated input
+//        System.setIn(originalSystemInStream);  // Restore the original System.in
+//    }
+
+    @Test
+    void testBoardInitialization() {
+        String simulatedInput = "Assignment_1/original_code/assignment3GUI - Classmate's/src/data.txt";
+//        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
         InputStream originalSystemInStream = System.in;  // Save the original System.in
         ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
         System.setIn(simulatedInputStream);  // Set System.in to the new input stream
         world = new World();  // This will call FileInitialization.read() and use the simulated input
         System.setIn(originalSystemInStream);  // Restore the original System.in
-    }
 
-    @Test
-    void testBoardInitialization() {
         System.out.println("Test 1 running.");
         assertNotNull(world.aWorld, "Board should be initialized");
         assertEquals(World.SIZE, world.aWorld.length, "Board should have correct rows");
@@ -29,21 +41,76 @@ class refactor_1_test {
 
     @Test
     void sortDeadTest(){
-        // not sure how to test because the comment just says doesnt work as intended??
+        // not sure how to test because the comment just says doesn't work as intended??
+        //but works in gui
     }
 
     @Test
     void testSort(){
+        String simulatedInput = "Assignment_1/original_code/assignment3GUI - Classmate's/src/data.txt";
+//        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
         //in data.txt the sorted array should be OOEEOOEE
         StringBuilder afterSort = new StringBuilder();
         for (Location location : world.loc) {
             afterSort.append(location != null ? location.getType() : "");
         }
-        assertEquals("OOEEOOEE", afterSort.toString(), "Locations should be sorted with Orcs before Elves");
+        assertEquals("OOEEOOEE", afterSort.toString(), "Locations should be sorted like this");
     }
 
     @Test
     void testAttack(){
+        // create world and tell them to attack
+        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
+
+        world.tempRow = 0;
+        world.tempColumn = 0;
+        world.attack(0); //elf will attack
+        int Hp = world.aWorld[world.loc[1].getRow()][world.loc[1].getColumn()].getHitPoints();
+        System.out.println("health after attack: " + Hp);
+        assertTrue(world.aWorld[world.loc[1].getRow()][world.loc[1].getColumn()].getHitPoints() < 10, "Orc should lose HP after attack");
+    }
 
+    @Test
+    void checkPerimTest(){
+        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/perimTest.txt\n";
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
+
+        assertTrue(world.checkPerim(0), "should be true, something next to the elf");
+        assertTrue(world.checkPerim(1), "should be true, something next to the orc");
+        assertFalse(world.checkPerim(2), "should be false, nothing next to the elf");
+        assertFalse(world.checkPerim(3), "should be false, spot is null");
     }
+
+    @Test
+    void testMove(){
+        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/moveTest.txt\n";
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
+
+        assertEquals('O', world.aWorld[0][0].getAppearance(), "should be an Orc at 0,0");
+        System.out.println(world.aWorld[0][0].getAppearance()+ " at: 0:0");
+        world.move(1);
+        assertEquals('O', world.aWorld[1][1].getAppearance(), "should be an Orc");
+        System.out.println(world.aWorld[1][1].getAppearance() + " at: 1:1, from move function" );
+
+    }
+
+
 }
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java
index 6485581..e56a211 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java	
@@ -1,60 +1,22 @@
-//public void attack(int index) {
-//    if(((loc[index].getType() == 'O') || (aWorld[tempRow][tempColumn].getAppearance() != 'O')) &&
-//            ((loc[index].getType() == 'E') || (aWorld[tempRow][tempColumn].getAppearance() != 'E'))) {
-//        loc[index].setCanMove(true);
-//        return;
+//public boolean checkPerim(int index) {//looks at all the spaces around the current index of loc[index] looking for things not null
+//    if (loc[index] == null){
+//        return false;
 //    }
-//    turnSinceAtk = 0;
-//    if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-//        HP = aWorld[tempRow][tempColumn].getHitPoints();
-//        aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ELF_DAMAGE);
-//        HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
-//        if (GameStatus.debugModeOn) {//attack data for elf attackers
-//            status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+//    for(int r = loc[index].getRow()-1; r<loc[index].getRow()+2;r++) {
+//        for(int c = loc[index].getColumn()-1; c<loc[index].getColumn()+2;c++ ) {
+//            if((r > 9)||(c > 9)||(r <= - 1)||(c <= -1)){ //ensuring r/c is in aWorld
+//                continue;
+//            }
+//            if((aWorld[r][c] == null) || (loc[index].getType() == aWorld[r][c].getAppearance())) {
+//                continue;
+//            }
+//            loc[index].setCanMove(false);
+//            tempRow = r;
+//            tempColumn = c;
+//            attack(index);
+//            return true;
 //        }
-//        if (aWorld[tempRow][tempColumn].getHitPoints() >0){
-//            return;
-//        }
-//        aWorld[tempRow][tempColumn] = null;
-//        orcCounter--;
-//        sortDead();
-//        if(loc[index] != null) {
-//            loc[index].setCanMove(true);
-//        }
-//        if (orcCounter > 0) {
-//            return;
-//        }
-//        System.out.println("Elves win no more orcs left.");
-//        programRunning = false;
-//        if(GameStatus.debugModeOn) {//lose condition data
-//            status.orcLoseDebug(orcCounter);
-//        }
-//    } else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-//        HP = aWorld[tempRow][tempColumn].getHitPoints();
-//        aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ORC_DAMAGE);
-//        HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
-//        if (GameStatus.debugModeOn) {
-//            //attack data for Orc attackers
-//            status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-//        }
-//        if (aWorld[tempRow][tempColumn].getHitPoints() >0){
-//            return;
-//        }
-//        aWorld[tempRow][tempColumn] = null;
-//        elfCounter--;
-//        sortDead();
-//        if(loc[index] != null) {
-//            loc[index].setCanMove(true);
-//        }
-//        if (elfCounter>0){
-//            return;
-//        }
-//        System.out.println("Orcs win no more elves left.");
-//        programRunning = false;
-//        if(GameStatus.debugModeOn) {//gives data for lose condition when no elves left standing
-//            status.elfLoseDebug(elfCounter);
-//        }
-//    } else {
-//        loc[index].setCanMove(true);
 //    }
+//    loc[index].setCanMove(true);
+//    return false;
 //}
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java
new file mode 100644
index 0000000..4aac898
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java	
@@ -0,0 +1,39 @@
+//public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
+//    if (checkPerim(index) == true){ //checks the perim for things not null if it finds something it returns true and the move code below doesn't run
+//        return;
+//    }
+//    if (loc[index] == null) {
+//        return;
+//    }
+//    if (loc[index].getCanMove()==false){
+//        return;
+//    }
+//    if((loc[index].getRow()-1 != -1)&&(loc[index].getColumn()-1 != -1)) {
+//        if ((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()-1][loc[index].getColumn()-1]== null)) {
+//            oldRow = loc[index].getRow();
+//            oldCol = loc[index].getColumn();
+//            loc[index].setRow(oldRow-1);
+//            loc[index].setColumn(oldCol-1);
+//            aWorld[oldRow-1][oldCol-1] = aWorld[oldRow][oldCol];
+//            aWorld[oldRow][oldCol] = null;
+//        }
+//    }
+//    if((loc[index].getRow()+1 != 10)&&(loc[index].getColumn()+1 != 10)) {
+//        if ((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()+1][loc[index].getColumn()+1]== null)) {
+//            oldRow = loc[index].getRow();
+//            oldCol = loc[index].getColumn();
+//            loc[index].setRow(oldRow+1);
+//            loc[index].setColumn(oldCol+1);
+//            aWorld[oldRow+1][oldCol+1] = aWorld[oldRow][oldCol];
+//            aWorld[oldRow][oldCol] = null;
+//        }
+//    }
+//    if ((GameStatus.debugModeOn)&&(loc[index]== null)) {
+//        return;
+//    }
+//    if (loc[index].getType() == 'E') {//elf move data
+//        status.elfMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+//    } else if (loc[index].getType() == 'O') {//orc move data
+//        status.orcMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+//    }
+//}
\ No newline at end of file
diff --git a/out/production/501-gitlab/World.class b/out/production/501-gitlab/World.class
index 0e7ce70287ebd826cecad6540b22e7a9a55e6078..3d3202607e18fd3e1f5d9d9040e360d29386b86a 100644
GIT binary patch
delta 1444
zcma)*X-r&I6vuz}&10G2v6C8L25H2$PBf*{q-x_v2n`miBrcU!6G4W8tzcn5D70hQ
zS{B=yS16#A3D6QPYS|_lW24d(tF2qrx<oO4H=6W|N)tVgDFx9FzPxwdx%d3<J<I=`
z9`~p2)BQHTok*THsKrnizUs>Ihs(;J_GbBZI@rP<gL;a^u*2)iE%W79l$HCctP^_;
z_E{&i+<Xi7g28?&1y{8U*JRLa;UaSLvr2s4N;|7*H8{X3MO3l3sM_49M}@Z;w9{ec
z=`N>(XkIip#9@U)Zp$t#-%?TIRp@KBnI-xr)iLq99;U~OcdSR^p8q#bOh<0F*#f*X
zvC_y@{+EeB1Fg$FNv3?s9uZE@4EmTTv8kRQ1#u4rNcpEd$OG2yQc%u+f@D`fwkc{B
zugeK2$F=Ls+31_~x+xk=S8Upib#W2JLHzFJz68)XPK#L(n~~fg#>OBA|AjFdW7a2k
z%Jz!m;&Plj6OIJQvRvO}o&6*x@4BP3y72$&XIWi>)S2C}>;0CW#05V+OZ@bbDkdv~
z#2|emM2jX>)Pr=62>~{yMV?`;$P(h&K>}rL;2Cab7u$K3C#ay1=Y;6p3{c5gs`wTk
zvs5eTK;@)Xx%})=w^FY*(4aQ5S7ozLNq4D7*smU?Nj*ukDxyV|(yD4Ws0L_LleDXE
z=up4VsjhHHb8<w><Rxt#rgk4kwas*C57Mn|<(O7TuU1N*R>mvZZu+$vj%y7JXzdJY
zM;XR{R^nd~Y8*b~ysV^!xFAiY_(&E>#3W>7%yBAdZAAJUC#;`cY=aDm`~W0W8@eFJ
zLj{^4%r+WQgB0q;cRQ~y!k!wWX<_Bni|=u{&AZ|ae~~lJKEz`#OXfSZVe(ws5aA<a
z3pms1ae2;h$HKXSg+1xqfCWkmS!_a#+c`zD+ckyLof@QHA8od&k-xf{HIcp$%;L{B
zD&d9*+$7Zb;UsoOh~iaN@fum2Vk@I;;|&^kQvhSMF)lMYfypF2OwlK}fZ$K^7N>bz
z*af%L!9zLcq<S`P;4m|y$xzDKYqb?^X>B8;t`e1_u9BiwXQcc|n7mTfi_$Lh#nr|M
zw=PhBSP2F6#X(&<*Ta1>ClmDvr7EVS7bBFY1u%b0-082uB@w(U8J@wxdnEF{usTh;
z#Jo~sy;q{#CGph>`>n!x7avPwToCI;F7X*x_*|v)g}RMP(xP9g`}s;e&ey7z%jy8%
zscybk$M`{=;74_yS#_D8)bIQ}UlHl7HCFTs>5I0Qek^u}-I!x+j)@r7nZG98@;B}h
BXpR5?

delta 1312
zcma)+TTEPK5XXOWc7Z~d1<GOr-Ng%}mQ6?zZ?Q%#u^3`YORSn!O<Hu9OOQojSt=G6
zT1tUdX*nqYngRjp4NL^e#(TA`^dg4ZCYrwMizfPDpWG&OP8U&<K6rA@eDlrxXU=>x
z|8o|+{oapH*uqI9)8t?eZwN^Z{@|14fzrB=U$C!xA@BJ_R`8~Sy*LC%u(3X{y*luU
zzbIIfL@94M2;);nr9W6w9W1M>4g?#lh&BiNtO%o|%)+%hI6%GPH2pH%K?mzQEnq@P
zSy4sMU!TambUQf2T4ANn|8iqxX`Ro%Es&)4w;jAgkC|`xm{s;o(lhgsJ<gt{@4>pX
z!dq+S%-Iz$+HAvQ&fM)Nk@9X5Fu*wMJw?iz!U#K4x2aQi1^Q$bs&K1yi)FPoi<siu
zV$|x4VeAn?Q(oIF&F0nQ4fd8<TFo?P_MI)M3BCyXy^30vUjZG{beUV7xtXo%?1*4h
zv>am&r>r(doo)%4r=6>%%lyf?c`0>vOZ@-MeC&3a@6QaWIeiHG)HIK*>W@%l)t_Tk
z^;=3-I5egGvvF2sgnX41c&Vg>DxRU5?bNV?S81b`J_3AB9hZ5HA9<adG)Ou@aS@Un
znk1h+a-Z^P1I@CDy|S4W*+N*JrB!y)CcD@twX{ng2V{Z{S>T|Af2LD@rQ1m7u%W{?
z*3n};%n_rAqed~k##T&Y2gi(E^clP9H>wygY8f;dIBv8tWE^6Ib6WNtv2k;Oi@MXn
zGq2PTF6qXFGdCwG%7klu!d+2LT1%q(Mj3lRmop$wX%FlQoz!M27v>m`DG|!;zQ^24
zo4DPhw3tO{S@*o;PE8!6%wx%?-Nrb@9u*rES>P`8Xod&P)-+dmnCw`vO{wE`&ngE!
zv$(x$BAl>Kw%g>ro5$M?mCZ4j#W35XZBlEAP33V?R39agF>)E_2~P4H@6yEkI+YLT
z;6wdzCOE<*z3T5*+z?ahomNly)UED#^>76`(mCykjSRXtubO@!8noCk)&ASD_#0%%
z4YDLk`Cr88y;58CJ@v7M8H2=I@p9cd$;hDm9xH!Neu*g&#s}n@cV>81r6hL^P`l{I
zXS!T9;R-VK<)7$J<5SZ3439GFQNGX;zoe0`^gnW%qkOHy{YK>(7WkGwm=ibWC65d8
z5ErGGOUkY9B*?t%XF+<oEF=6N=eQzQxGH~g?O$rh^?wek+I+?mHyqfbEJT@!ve8_d
Gk@q*wm`B?H

diff --git a/out/production/501-gitlab/refactor_1_test.class b/out/production/501-gitlab/refactor_1_test.class
index 6275ddd1152249ce19a35ebb157eb5a82215c4c6..2d279dfae2a620f21ff07caec8e616acc01d398e 100644
GIT binary patch
literal 4846
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

delta 858
zcmZ`$O-~b16g_V`)9Fm0Vr#|np>4Irv_!=iC7Lu5QyN8Mh!|vJQcJNaiKHC?KU)P6
z{EV5nbmN9K#1x{2r3)fE7sieL0uwhbt!JjSZ8R+2d-vV@&bjBF_anTqO<({0ZVkW*
zym+Y}5=ryB8rMcsMrxliZRkrgy|U;rKgjLAsVhb{a5k6D2QFpCuIDm=#Q0>!{3a*O
z&#nQdlFu0DC(I+-D-kj`v{t>(ew0Y1vu20ZX@1fc+`|I8k;xm!4I`DlX1><<Tt)yP
zNNmp%!iX?(aw*&eZZO)<Q&^ek3d9lv36tEdGN59LdsF2Brg4)u;1;Wr4W5GoGBXkL
zXLGnvNAD!k!a2~)$PF*HpcO3$Vk<>>Y}RN6S!H!#H*Vt&JE_=(yTnLDd2tT~vJ}Z?
zDZ0-Scu?y<&zhyPe;HjK^Gj2*U}>*(-wqdhda;9D{pdj(j-ee1bTrJ=U+rEb%Hp5l
z3Cz~`W4u}X{}~f(AQ25Dg*wZ_8p|)Lv`jzs9)lw*ICpv(!M7MX)4djV9F~1@=Nm-2
zee%JhO3bf(gxjx_aA6e}7om7YOBfrTmBnKDtLJL0gmKTrDsq<74*Q?lY~~1O?c$t!
z3+QDKM-(R!vo!|zFi0cj@QA-o5mmJ=^kE(g9Pcr+Ly*hxK~WJ>F{t8+;Miq)<!s2P
s7=d89Owhl1$%aYUGBhx@SV&vssyp(u=E$bL9@xa!za#?BNGaj@A4o)feE<Le

-- 
GitLab


From fd1f69227b5b20e83035d5fcfe4600747e60ec26 Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Sun, 16 Feb 2025 21:09:06 -0700
Subject: [PATCH 04/17] forgot to add the txt world files for the tests

---
 .../assignment3GUI - Classmate's/src/moveTest.txt      | 10 ++++++++++
 .../assignment3GUI - Classmate's/src/perimTest.txt     | 10 ++++++++++
 out/production/501-gitlab/attackTest.txt               | 10 ++++++++++
 out/production/501-gitlab/data2.txt                    | 10 ++++++++++
 4 files changed, 40 insertions(+)
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/moveTest.txt
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/perimTest.txt
 create mode 100644 out/production/501-gitlab/attackTest.txt
 create mode 100644 out/production/501-gitlab/data2.txt

diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/moveTest.txt b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/moveTest.txt
new file mode 100644
index 0000000..786c2c2
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/moveTest.txt	
@@ -0,0 +1,10 @@
+O         
+          
+          
+          
+          
+          
+          
+          
+          
+E         
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/perimTest.txt b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/perimTest.txt
new file mode 100644
index 0000000..87316a9
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/perimTest.txt	
@@ -0,0 +1,10 @@
+O         
+E         
+          
+          
+          
+          
+      O   
+          
+          
+          
\ No newline at end of file
diff --git a/out/production/501-gitlab/attackTest.txt b/out/production/501-gitlab/attackTest.txt
new file mode 100644
index 0000000..d96c03d
--- /dev/null
+++ b/out/production/501-gitlab/attackTest.txt
@@ -0,0 +1,10 @@
+O         
+E         
+          
+          
+          
+          
+          
+          
+          
+          
\ No newline at end of file
diff --git a/out/production/501-gitlab/data2.txt b/out/production/501-gitlab/data2.txt
new file mode 100644
index 0000000..925cdc3
--- /dev/null
+++ b/out/production/501-gitlab/data2.txt
@@ -0,0 +1,10 @@
+          
+ O    O   
+      E   
+      E   
+      O   
+      OE E
+       E  
+         E
+          
+          
\ No newline at end of file
-- 
GitLab


From 0b9573df8aca6a05c330abe03346d2f27516f0ee Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Sun, 16 Feb 2025 22:39:16 -0700
Subject: [PATCH 05/17] added some functions separated attack function to add
 readability as well as duplicate code pushing to save changes

---
 Assignment_1/README.md                        |  10 +-
 .../src/GamePanel.java                        |   1 -
 .../src/World.java                            | 161 +++++++++++-------
 .../src/reworks2.java                         |  99 ++++++++---
 .../501-gitlab/GamePanel$MyKeyAdapter.class   | Bin 1197 -> 1197 bytes
 out/production/501-gitlab/GamePanel.class     | Bin 4923 -> 4923 bytes
 out/production/501-gitlab/World.class         | Bin 5455 -> 6409 bytes
 out/production/501-gitlab/moveTest.txt        |  10 ++
 out/production/501-gitlab/perimTest.txt       |  10 ++
 .../501-gitlab/refactor_1_test.class          | Bin 4846 -> 4866 bytes
 10 files changed, 193 insertions(+), 98 deletions(-)
 create mode 100644 out/production/501-gitlab/moveTest.txt
 create mode 100644 out/production/501-gitlab/perimTest.txt

diff --git a/Assignment_1/README.md b/Assignment_1/README.md
index 1738476..3c54b7d 100644
--- a/Assignment_1/README.md
+++ b/Assignment_1/README.md
@@ -8,12 +8,12 @@ Used code from __ and refactored
 
 Refactor branch 1: De-nesting code in world
 
-refactor branch 2: comments
+refactor branch 2: pulling out methods
 
-refactor branch 3: pulling out methods
+refactor branch 3: rearrange classes?
 
-refactor branch 4: rearrange classes?
+refactor branch 4: new class? for elves and dwarves?
 
-refactor branch 5: new class? for elves and dwarves?
+refactor branch last: comments
 
-refactor: _ maybe renaming? or getting rid of temp
\ No newline at end of file
+refactor: _ maybe renaming? or getting rid of temp variables or unused ones
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java
index 4a58933..5a21c73 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
@@ -52,7 +52,6 @@ public class GamePanel extends JPanel implements ActionListener{
 	
 	public void drawWorld(Graphics g) {
 		for (int r = 0; r<world.SIZE;r++) {
-			
 			for (int c = 0; c<world.SIZE; c++) {
 				if(world.aWorld[r][c] == null) {
 				g.setColor(Color.white);
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java
index f10c667..67bea8f 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
@@ -36,33 +36,38 @@ public class World
 	{
 		aWorld = new Entity[SIZE][SIZE]; // this is null anyway
 		aWorld = FileInitialization.read();
-		// refactor 1 this could be de-nested for readability
-		for (int r = 0; r < SIZE; r++)
-		{
+		initializeGrid();
+	}
+
+	public void initializeGrid(){
+		for (int r = 0; r < SIZE; r++){
 			System.out.println("\n - "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+ "- "); // removed unnecessary print
-			for (int c = 0; c < SIZE; c++)
-			{
-				if (aWorld[r][c] == null) {
-					System.out.print("| ");
-					continue;
-				}
-				char currentCellAppearance = aWorld[r][c].getAppearance();
-				System.out.print("|"+currentCellAppearance);
-				loc[i] = new Location(r,c,currentCellAppearance);//Initializes each Entities location/type
-				if (loc[i].getType() == 'O') {//this checks the type and counts +1 if it's an orc
-					orcCounter++;
-				}
-				if (loc[i].getType() == 'E') {
-					elfCounter++;
-				}
-				i++;//Cause each initialization of the loc[i] to go to the next element
+			for (int c = 0; c < SIZE; c++){
+				initalizeLocations(r, c);
 			}
 			System.out.print("|");
 		}
 		System.out.println("\n - "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+ "- ");
 		sortLocations();
 	}
-	// Same here this could be de-nested
+
+	public void initalizeLocations(int r, int c){
+		if (aWorld[r][c] == null) {
+			System.out.print("| ");
+			return;
+		}
+		char currentCellAppearance = aWorld[r][c].getAppearance();
+		System.out.print("|"+currentCellAppearance);
+		loc[i] = new Location(r,c,currentCellAppearance);//Initializes each Entities location/type
+		if (loc[i].getType() == 'O') {//this checks the type and counts +1 if it's an orc
+			orcCounter++;
+		}
+		if (loc[i].getType() == 'E') {
+			elfCounter++;
+		}
+		i++;//Cause each initialization of the loc[i] to go to the next element
+	}
+
 	public void sortDead() {//supposed to try and sort null elements and bring them to the end doesn't always work as intended
 		for (int i = 0; i<=elfCounter+orcCounter;i++) {
 			if (loc[i] == null) {
@@ -78,7 +83,7 @@ public class World
 			}
 		}
 	}
-	//	and potenitally here
+
 	public void sortLocations() {//puts the elfs in the beginning of the array, checks if there is an orc before and elf and if there is it swaps positions in the array
 		for (int j = 0; j<elfCounter+orcCounter; j++) {
 			if (loc[j+orcCounter] == null){
@@ -110,58 +115,82 @@ public class World
 		}
 		turnSinceAtk = 0;
 		if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-			HP = aWorld[tempRow][tempColumn].getHitPoints();
-			aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ELF_DAMAGE);
-			HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
-			if (GameStatus.debugModeOn) {//attack data for elf attackers
-				status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-			}
-			if (aWorld[tempRow][tempColumn].getHitPoints() >0){
-				return;
-			}
-			aWorld[tempRow][tempColumn] = null;
-			orcCounter--;
-			sortDead();
-			if(loc[index] != null) {
-				loc[index].setCanMove(true);
-			}
-			if (orcCounter > 0) {
-				return;
-			}
-			System.out.println("Elves win no more orcs left.");
-			programRunning = false;
-			if(GameStatus.debugModeOn) {//lose condition data
-				status.orcLoseDebug(orcCounter);
-			}
+			attackLogic("elves", index);
 		} else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-			HP = aWorld[tempRow][tempColumn].getHitPoints();
-			aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ORC_DAMAGE);
-			HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
-			if (GameStatus.debugModeOn) {
-				//attack data for Orc attackers
-				status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-			}
-			if (aWorld[tempRow][tempColumn].getHitPoints() >0){
+			attackLogic("orcs", index);
+		} else {
+			loc[index].setCanMove(true);
+		}
+	}
+
+	public void attackLogic(String attackingEntity, int index){
+		int entityDmg = 0;
+		if (attackingEntity.equals("elves")) {
+			entityDmg = Entity.ELF_DAMAGE;  // Define the Elf damage constant or value
+		} else if (attackingEntity.equals("orcs")) {
+			entityDmg = Entity.ORC_DAMAGE;  // Define the Orc damage constant or value
+		}
+		HP = aWorld[tempRow][tempColumn].getHitPoints();
+		aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-entityDmg);
+		HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
+
+		if (GameStatus.debugModeOn) {//attack data for elf attackers
+			debugAttack(attackingEntity, index);
+		}
+		deathLogic(attackingEntity, index);
+		victoryLogic(attackingEntity);
+		if(GameStatus.debugModeOn) {//lose condition data
+			debugLossConditions(attackingEntity);
+		}
+	}
+
+	public void debugAttack(String attackingEntity, int index){
+		if (attackingEntity.equals("elves")) {
+			status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+		} else if (attackingEntity.equals("orcs")) {
+			status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+		}
+	}
+
+	public void debugLossConditions(String attackingEntity){
+		if (attackingEntity.equals("elves")) {
+			status.orcLoseDebug(orcCounter);
+		} else if (attackingEntity.equals("orcs")) {
+			status.elfLoseDebug(elfCounter);
+		}
+	}
+
+	public void deathLogic(String attackingEntity, int index){
+		if (aWorld[tempRow][tempColumn].getHitPoints() >0){
+			return;
+		}
+		aWorld[tempRow][tempColumn] = null;
+
+		if (attackingEntity.equals("elves")) {
+			orcCounter--; //here  // Define the Elf damage constant or value
+		} else if (attackingEntity.equals("orcs")) {
+			elfCounter--; //here  // Define the Orc damage constant or value
+		}
+		sortDead();
+		if(loc[index] != null) {
+			loc[index].setCanMove(true);
+		}
+	}
+
+	public void victoryLogic(String attackingEntity){
+		if (attackingEntity.equals("elves")) {
+			if (orcCounter > 0) { //here
 				return;
 			}
-			aWorld[tempRow][tempColumn] = null;
-			elfCounter--;
-			sortDead();
-			if(loc[index] != null) {
-				loc[index].setCanMove(true);
-			}
-			if (elfCounter>0){
+		} else if (attackingEntity.equals("orcs")) {
+			if (elfCounter > 0) { //here
 				return;
 			}
-			System.out.println("Orcs win no more elves left.");
-			programRunning = false;
-			if(GameStatus.debugModeOn) {//gives data for lose condition when no elves left standing
-				status.elfLoseDebug(elfCounter);
-			}
-		} else {
-			loc[index].setCanMove(true);
 		}
+		System.out.println(attackingEntity + "win no more orcs left.");
+		programRunning = false;
 	}
+
 	public boolean checkPerim(int index) {//looks at all the spaces around the current index of loc[index] looking for things not null
 		if (loc[index] == null){
 			return false;
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java
index 4aac898..38a48a1 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java	
@@ -1,39 +1,86 @@
-//public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
-//    if (checkPerim(index) == true){ //checks the perim for things not null if it finds something it returns true and the move code below doesn't run
+//public void attack(int index) {// new
+//    if(aWorld[tempRow][tempColumn] == null){
 //        return;
 //    }
-//    if (loc[index] == null) {
+//    if((loc[index].getType() == 'O') && (aWorld[tempRow][tempColumn].getAppearance() == 'O')) {
 //        return;
 //    }
-//    if (loc[index].getCanMove()==false){
+//    if((loc[index].getType() == 'E') && (aWorld[tempRow][tempColumn].getAppearance() == 'E')) {
 //        return;
 //    }
-//    if((loc[index].getRow()-1 != -1)&&(loc[index].getColumn()-1 != -1)) {
-//        if ((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()-1][loc[index].getColumn()-1]== null)) {
-//            oldRow = loc[index].getRow();
-//            oldCol = loc[index].getColumn();
-//            loc[index].setRow(oldRow-1);
-//            loc[index].setColumn(oldCol-1);
-//            aWorld[oldRow-1][oldCol-1] = aWorld[oldRow][oldCol];
-//            aWorld[oldRow][oldCol] = null;
-//        }
+//    turnSinceAtk = 0;
+//    if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+//        attackLogic("elves");
+//    } else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+//        attackLogic("orcs");
+//    } else {
+//        loc[index].setCanMove(true);
+//    }
+//}
+//
+//void attackLogic(String attackingEntity){
+//    if (attackingEntity.equals("elves")) {
+//        entityDmg = Entity.ELF_DAMAGE;  // Define the Elf damage constant or value
+//    } else if (attackingEntity.equals("orcs")) {
+//        entityDmg = Entity.ORC_DAMAGE;  // Define the Orc damage constant or value
 //    }
-//    if((loc[index].getRow()+1 != 10)&&(loc[index].getColumn()+1 != 10)) {
-//        if ((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()+1][loc[index].getColumn()+1]== null)) {
-//            oldRow = loc[index].getRow();
-//            oldCol = loc[index].getColumn();
-//            loc[index].setRow(oldRow+1);
-//            loc[index].setColumn(oldCol+1);
-//            aWorld[oldRow+1][oldCol+1] = aWorld[oldRow][oldCol];
-//            aWorld[oldRow][oldCol] = null;
+//
+//    HP = aWorld[tempRow][tempColumn].getHitPoints();
+//    aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-entityDmg);
+//    HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
+//
+//    if (GameStatus.debugModeOn) {//attack data for elf attackers
+//        debugAttack(attackingEntity);
+//    }
+//
+//    deathLogic(attackingEntity, index);
+//
+//    if (attackingEntity.equals("elves")) {
+//        if (orcCounter > 0) { //here
+//            return;
+//        }
+//    } else if (attackingEntity.equals("orcs")) {
+//        if (elfCounter > 0) { //here
+//            return;
 //        }
 //    }
-//    if ((GameStatus.debugModeOn)&&(loc[index]== null)) {
+//
+//    System.out.println(entity + "win no more orcs left.");
+//    programRunning = false;
+//    if(GameStatus.debugModeOn) {//lose condition data
+//        debugLossConditions(attackingEntity);
+//    }
+//}
+//
+//public void debugAttack(String attackingEntity){
+//    if (attackingEntity.equals("elves")) {
+//        status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+//    } else if (attackingEntity.equals("orcs")) {
+//        status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+//    }
+//}
+//
+//public void debugLossConditions(String attackingEntity){
+//    if (attackingEntity.equals("elves")) {
+//        status.orcLoseDebug(orcCounter);
+//    } else if (attackingEntity.equals("orcs")) {
+//        status.elfLoseDebug(elfCounter);
+//    }
+//}
+//
+//public void deathLogic(String attackingEntity, int index){
+//    if (aWorld[tempRow][tempColumn].getHitPoints() >0){
 //        return;
 //    }
-//    if (loc[index].getType() == 'E') {//elf move data
-//        status.elfMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
-//    } else if (loc[index].getType() == 'O') {//orc move data
-//        status.orcMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+//    aWorld[tempRow][tempColumn] = null;
+//
+//    if (attackingEntity.equals("elves")) {
+//        orcCounter--; //here  // Define the Elf damage constant or value
+//    } else if (attackingEntity.equals("orcs")) {
+//        elfCounter--; //here  // Define the Orc damage constant or value
+//    }
+//    sortDead();
+//    if(loc[index] != null) {
+//        loc[index].setCanMove(true);
 //    }
 //}
\ No newline at end of file
diff --git a/out/production/501-gitlab/GamePanel$MyKeyAdapter.class b/out/production/501-gitlab/GamePanel$MyKeyAdapter.class
index d10864080b129a4b78920b5ddbc727c517cc5e25..1385e25362c535dd0485d8e609a6625088f3a994 100644
GIT binary patch
delta 59
zcmV-B0L1^T39SjRkplsmlad3dDVzWx0G<FX0G|Li0H6Rm0Hy#y0H***0H^>=0I2{^
R0IL930IUF80I!o{1WEw$5IFz<

delta 59
zcmV-B0L1^T39SjRkplsnlad3dDV+cy0G|LY0H6Rj0HFXn0H**z0H^>+0I2{>0IC2_
R0IUF40IdL90I-u|1WE!o5Jdn0

diff --git a/out/production/501-gitlab/GamePanel.class b/out/production/501-gitlab/GamePanel.class
index 8c927200acee848167a852912edf89ec881e9072..91fe0cc0bbae24617fed89744a345f5612f04abd 100644
GIT binary patch
delta 326
zcmWNMNlOA?5Qd*GIwn!a@+cBrLW8u0OhnK&%CfQ*!xphUTfitPrR`8;8${HhQxOOr
zA`Ciu=os_^y7U)1_Fje=W|-%B3-*FN_f_U_QH7ft8mXfRAI-GWLX=jLcu3R6HC`TZ
z@k9eT{P|MLkBJ1Z5~N<oJ~~u8>8Fcfx{1@n620sYB10b++T0P=iveC3<eectb@|JP
zDPh#u7&8IJO^6AzOf>H)e>1@t)lA`JT3$0k%nA`FLV`)=)XlTP0=q17CfL2E0;_z>
z`HwYYW!>1>Fn%`k-U^2ar?9Yvjcsb><y7xxPZ9T(AuaEW91rAlNQ@%^j!AK%?J2hc
XJa8`iEYHgF$|WCMQRF6DtW5p`3ol4J

delta 326
zcmWNNOD{tK5QV=HOO3Fk%jQOGq$E<$Dj_aPl%n1mO2w<xD>R5lycU%f5fK(vMAGCg
zM6SfL3rmR~VB;@Xn%&G~&N<(VZP-TUE6?qrh$>2`ri>bzsHKfMCh!ucfdhP8)5s$p
zo~R^4i<Rs6k&uZ~7b|F2NrzT`dg)}4E~0d^M1UQ7IMivHAb0esML#bL@J@(NhWKSz
zau^X8qteQl1Q?eXVauEUCgv2yL?~xk*=95%su8m)oFmM<b_*=C$esoziE+;gw(@?n
z${%auWL*q4q?t|2SKyZ5HVzWFl&O?mwN2<b`_$`srZW0DQqE(gKVgzn4LM_rbKOXC
Z%LNalls?Tfm%MVthrT4sO)6U${|7pbNQVFb

diff --git a/out/production/501-gitlab/World.class b/out/production/501-gitlab/World.class
index 3d3202607e18fd3e1f5d9d9040e360d29386b86a..9256c6a0d354b8f16e004d1d84ffbbc4f9231a12 100644
GIT binary patch
literal 6409
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
OlIG+1YfaPK82&%{d)*WO

literal 5455
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

diff --git a/out/production/501-gitlab/moveTest.txt b/out/production/501-gitlab/moveTest.txt
new file mode 100644
index 0000000..786c2c2
--- /dev/null
+++ b/out/production/501-gitlab/moveTest.txt
@@ -0,0 +1,10 @@
+O         
+          
+          
+          
+          
+          
+          
+          
+          
+E         
\ No newline at end of file
diff --git a/out/production/501-gitlab/perimTest.txt b/out/production/501-gitlab/perimTest.txt
new file mode 100644
index 0000000..87316a9
--- /dev/null
+++ b/out/production/501-gitlab/perimTest.txt
@@ -0,0 +1,10 @@
+O         
+E         
+          
+          
+          
+          
+      O   
+          
+          
+          
\ No newline at end of file
diff --git a/out/production/501-gitlab/refactor_1_test.class b/out/production/501-gitlab/refactor_1_test.class
index 2d279dfae2a620f21ff07caec8e616acc01d398e..a65f06e71ad125eed976952294dca3078788afe0 100644
GIT binary patch
delta 43
ycmaE-+N8FDg<DRRQ6aI!O2N>|P)8xHC_h&rH@_@ZA+0noxg;|`Z!;hF19kuzvkkHU

delta 23
ecmZotd#AdAg`10$Q6aI!O2N>|aI+Hk19kvSdImuN

-- 
GitLab


From a144509c43132183846d504308374bed8bf2e49c Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Sun, 16 Feb 2025 23:22:59 -0700
Subject: [PATCH 06/17] changed the move function to be split into different
 functions to eliminate repetitive code and length

---
 Assignment_1/Notes.txt                        |  99 +++++++-----------
 .../src/World.java                            |  37 +++----
 .../src/reworks.java                          |  60 +++++++----
 out/production/501-gitlab/World.class         | Bin 6409 -> 6511 bytes
 4 files changed, 97 insertions(+), 99 deletions(-)

diff --git a/Assignment_1/Notes.txt b/Assignment_1/Notes.txt
index 39a212a..1b7313c 100644
--- a/Assignment_1/Notes.txt
+++ b/Assignment_1/Notes.txt
@@ -7,63 +7,42 @@ classmate's,
 -------------
 
 
-//public void attack(int index) {
-//    if(((loc[index].getType() == 'O') && (aWorld[tempRow][tempColumn].getAppearance() != 'O')) ||
-//            ((loc[index].getType() == 'E') && (aWorld[tempRow][tempColumn].getAppearance() != 'E'))) {
-//        loc[index].setCanMove(true);
-//        return;
-//    }
-//    turnSinceAtk = 0;
-//    if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-//        HP = aWorld[tempRow][tempColumn].getHitPoints();
-//        aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ELF_DAMAGE);
-//        HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
-//        if (GameStatus.debugModeOn) {//attack data for elf attackers
-//            status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-//        }
-//        if (aWorld[tempRow][tempColumn].getHitPoints() >0){
-//            return;
-//        }
-//        aWorld[tempRow][tempColumn] = null;
-//        orcCounter--;
-//        sortDead();
-//        if(loc[index] != null) {
-//            loc[index].setCanMove(true);
-//        }
-//        if (orcCounter > 0) {
-//            return;
-//        }
-//        System.out.println("Elves win no more orcs left.");
-//        programRunning = false;
-//        if(GameStatus.debugModeOn) {//lose condition data
-//            status.orcLoseDebug(orcCounter);
-//        }
-//    } else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-//        HP = aWorld[tempRow][tempColumn].getHitPoints();
-//        aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-Entity.ORC_DAMAGE);
-//        HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
-//        if (GameStatus.debugModeOn) {
-//            //attack data for Orc attackers
-//            status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-//        }
-//        if (aWorld[tempRow][tempColumn].getHitPoints() >0){
-//            return;
-//        }
-//        aWorld[tempRow][tempColumn] = null;
-//        elfCounter--;
-//        sortDead();
-//        if(loc[index] != null) {
-//            loc[index].setCanMove(true);
-//        }
-//        if (elfCounter>0){
-//            return;
-//        }
-//        System.out.println("Orcs win no more elves left.");
-//        programRunning = false;
-//        if(GameStatus.debugModeOn) {//gives data for lose condition when no elves left standing
-//            status.elfLoseDebug(elfCounter);
-//        }
-//    } else {
-//        loc[index].setCanMove(true);
-//    }
-//}
\ No newline at end of file
+public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
+		if (checkPerim(index) == true){ //checks the perim for things not null if it finds something it returns true and the move code below doesn't run
+			return;
+		}
+		if (loc[index] == null) {
+			return;
+		}
+		if (loc[index].getCanMove()==false){
+			return;
+		}
+		if((loc[index].getRow()-1 != -1)&&(loc[index].getColumn()-1 != -1)) {
+			if ((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()-1][loc[index].getColumn()-1]== null)) {
+				oldRow = loc[index].getRow();
+				oldCol = loc[index].getColumn();
+				loc[index].setRow(oldRow-1);
+				loc[index].setColumn(oldCol-1);
+				aWorld[oldRow-1][oldCol-1] = aWorld[oldRow][oldCol];
+				aWorld[oldRow][oldCol] = null;
+			}
+		}
+		if((loc[index].getRow()+1 != 10)&&(loc[index].getColumn()+1 != 10)) {
+			if ((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()+1][loc[index].getColumn()+1]== null)) {
+				oldRow = loc[index].getRow();
+				oldCol = loc[index].getColumn();
+				loc[index].setRow(oldRow+1);
+				loc[index].setColumn(oldCol+1);
+				aWorld[oldRow+1][oldCol+1] = aWorld[oldRow][oldCol];
+				aWorld[oldRow][oldCol] = null;
+			}
+		}
+		if ((GameStatus.debugModeOn == false)||(loc[index] == null)) {
+			return;
+		}
+		if (loc[index].getType() == 'E') {//elf move data
+			status.elfMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+		} else if (loc[index].getType() == 'O') {//orc move data
+			status.orcMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+		}
+	}
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java
index 67bea8f..2a3afdd 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
@@ -224,33 +224,34 @@ public class World
 		if (loc[index].getCanMove()==false){
 			return;
 		}
+
 		if((loc[index].getRow()-1 != -1)&&(loc[index].getColumn()-1 != -1)) {
-			if ((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()-1][loc[index].getColumn()-1]== null)) {
-				oldRow = loc[index].getRow();
-				oldCol = loc[index].getColumn();
-				loc[index].setRow(oldRow-1);
-				loc[index].setColumn(oldCol-1);
-				aWorld[oldRow-1][oldCol-1] = aWorld[oldRow][oldCol];
-				aWorld[oldRow][oldCol] = null;
-			}
+			moveLogic('E', index, -1);
 		}
 		if((loc[index].getRow()+1 != 10)&&(loc[index].getColumn()+1 != 10)) {
-			if ((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()+1][loc[index].getColumn()+1]== null)) {
-				oldRow = loc[index].getRow();
-				oldCol = loc[index].getColumn();
-				loc[index].setRow(oldRow+1);
-				loc[index].setColumn(oldCol+1);
-				aWorld[oldRow+1][oldCol+1] = aWorld[oldRow][oldCol];
-				aWorld[oldRow][oldCol] = null;
-			}
+			moveLogic('O', index, 1);
 		}
-		if ((GameStatus.debugModeOn == false)||(loc[index] == null)) {
-			return;
+		if ((GameStatus.debugModeOn == true)&&(loc[index] != null)) {
+			debugMovement(index);
 		}
+	}
+
+	public void debugMovement(int index){
 		if (loc[index].getType() == 'E') {//elf move data
 			status.elfMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
 		} else if (loc[index].getType() == 'O') {//orc move data
 			status.orcMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
 		}
 	}
+
+	public void moveLogic(char entityType, int index, int increment){
+		if ((loc[index].getType() == entityType)&&(aWorld[loc[index].getRow()+ increment][loc[index].getColumn()+increment]== null)) {
+			oldRow = loc[index].getRow();
+			oldCol = loc[index].getColumn();
+			loc[index].setRow(oldRow+increment);
+			loc[index].setColumn(oldCol+increment);
+			aWorld[oldRow+increment][oldCol+increment] = aWorld[oldRow][oldCol];
+			aWorld[oldRow][oldCol] = null;
+		}
+	}
 }
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java
index e56a211..14d3272 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java	
@@ -1,22 +1,40 @@
-//public boolean checkPerim(int index) {//looks at all the spaces around the current index of loc[index] looking for things not null
-//    if (loc[index] == null){
-//        return false;
-//    }
-//    for(int r = loc[index].getRow()-1; r<loc[index].getRow()+2;r++) {
-//        for(int c = loc[index].getColumn()-1; c<loc[index].getColumn()+2;c++ ) {
-//            if((r > 9)||(c > 9)||(r <= - 1)||(c <= -1)){ //ensuring r/c is in aWorld
-//                continue;
-//            }
-//            if((aWorld[r][c] == null) || (loc[index].getType() == aWorld[r][c].getAppearance())) {
-//                continue;
-//            }
-//            loc[index].setCanMove(false);
-//            tempRow = r;
-//            tempColumn = c;
-//            attack(index);
-//            return true;
-//        }
-//    }
-//    loc[index].setCanMove(true);
-//    return false;
+//public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
+//    if (checkPerim(index) == true){ //checks the perim for things not null if it finds something it returns true and the move code below doesn't run
+//        return;
+//    }
+//    if (loc[index] == null) {
+//        return;
+//    }
+//    if (loc[index].getCanMove()==false){
+//        return;
+//    }
+//
+//    if((loc[index].getRow()-1 != -1)&&(loc[index].getColumn()-1 != -1)) {
+//        moveLogic('E', index, -1);
+//    }
+//    if((loc[index].getRow()+1 != 10)&&(loc[index].getColumn()+1 != 10)) {
+//        moveLogic('O', index, 1);
+//    }
+//    if ((GameStatus.debugModeOn == true)&&(loc[index] != null)) {
+//        debugMovement(index);
+//    }
+//}
+//
+//public void debugMovement(int index){
+//    if (loc[index].getType() == 'E') {//elf move data
+//        status.elfMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+//    } else if (loc[index].getType() == 'O') {//orc move data
+//        status.orcMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+//    }
+//}
+//
+//public void moveLogic(String entityType, int index, int increment){
+//    if ((loc[index].getType() == entityType)&&(aWorld[loc[index].getRow()+ increment][loc[index].getColumn()+increment]== null)) {
+//        oldRow = loc[index].getRow();
+//        oldCol = loc[index].getColumn();
+//        loc[index].setRow(oldRow+increment);
+//        loc[index].setColumn(oldCol+increment);
+//        aWorld[oldRow+increment][oldCol+increment] = aWorld[oldRow][oldCol];
+//        aWorld[oldRow][oldCol] = null;
+//    }
 //}
\ No newline at end of file
diff --git a/out/production/501-gitlab/World.class b/out/production/501-gitlab/World.class
index 9256c6a0d354b8f16e004d1d84ffbbc4f9231a12..ec16af92db7fb84aac15086e52800370a82dcba9 100644
GIT binary patch
delta 1882
zcmZ`)ZERCj7=BLM_2c$->$cLlbu(kk3=45v2NJWujB_px2u8p^hB&uf*O9WSnIj`6
z#e_wPS%|q)W1`#mqcPEh4c8yU_`@YC^J6kl5mZ1>w;_U`z!=l#+}_@nAExcO=RN0n
zpYuHLx#x6$<Z?urS~~IpfM($vQ+7C$3fwrVVhW!Mcy=ZFv`vYw?hXOx%I0YF&PU|*
z=PJHHzksh(Yk#KeL1K1kJ-r^ze5v9XRDu)n&W97b<<M~zCo)6LiMWCqe68XeoD@*C
z_!Bbwen}(XS{aQ-^>>{v=P4DZaq{pHXG8?a+}+#1t^Y}ldb)c$o;DWK=Ula(B>~&B
z!Y!aLcb69kn<DJO;SzZ&+JsZz<UTGudZj1q@Cw|nkGV_q18$cd_XKx*2NeR})3psh
zpcH3v;<Jp;<-|WSKA#g`VEj`~{4?WUa^hM2jHkiFDv%vGp@)?9-U6<c2PfM(y+hH&
zyna+^3SH#9)B$Y6ueijgK%<FT;eCjxUT<xUL{-9$B7S}&-o{TIE}NN6X66-r%3C4k
z^jYsq%-f@`Yn6FnIN0trF|wD*+iP-Fq7A>Jiu_lIbi*E4M2je+lBY~1*VGrt_?)ky
zLNW%8^?Ttp*WYcef6Q0P^)LFCh@Q`H%|XxO4-<XKLT@ez5xukEJkgu|jSU%YV8&8A
zgFlVDv@&N=b@jT4hsyS0fbE?AzJHk6j}|u9XT1(u*@O5Ce-j4`8a%RYFXA6E(yKmQ
zc$=(NVgL4d!&M&JA$agI*5Vaxz^mxOYmmIM_CU<yjaj@glUM3<z_zxYtG$D$p)FOk
zeq)yTbuzz!5)6}V1gmh+V3xH6R$I)gO=gp?q?k-^nqD^)_tEP_aYJKPlV)XVmL@Gn
zlM{|*)kQ(Fyltvl5ojSxcVJa*w%%(jmNmDoU+8D%hnO_{Oa>;I`TVktk7a5dL67kc
z+3D+m@m@(c;}+X^&h7=^_AbIJ7EvZ@s>>FT$1i!WqF=Hz@2adIp96Y*ur^s1eh&qq
zND6UBr)>n@u)if_OW~8uaLm!>S4I%Z#PM`Y+?J4oxN!_SMp2la{s``HD230)NN<PS
zl)K?$dy1QK8Vaw0VqO9PoaN@6!*X0evWX|Wm8ZH3vq&%{$^F{L6Pm5sfaP-_$EO=k
z#iQO)6QC>JkfygoJW0}9dq%G2Zy7}mqcDHd{LN%$Vn!!P=dl#NdJB=vgy!EeifTsx
zlakK(HtR9S0)vM-pT|4G19&fGKF$M?wa{)^XwR|0ZHOfAqH_KLr1c9s_eS0$LsCpR
zSJFbG*w3IYGZ3q2GnC57IQt)Cr_^bHV-vKP3E~rJujLXxUD1}pp7a#k85#DmQ<qFn
zN(=|(h#WA&$ktmzu{G<siq{u#jR)#F?!f{czzuB2B06!Co3{jAz;K_w6o)MLL(Hk7
zRe1r(3&)20WcPadrr<E&)Em(G?kq5{k#&*JeAt9w)=i`RSGYK)K=9v45h_am1Gg-#
Ah5!Hn

delta 1790
zcmZ`)ZERCz6n@^e>)PA9wOcy|n={4K)NFGf-N+Jf?8mYY#6+W#_=i~Is#VLX$Tnw8
zM&c(ii<&DeB(lv!;E(>;aQmUgA7W%MP}o!iL}l{}6b1}+A7%KwxA)$5S;$RJ-{*bL
zdCqgrJ@@T&WM@P<y7<ZG0GfqkP}$<Fal?fpDvm-Ga3&M24<<Y1)-e^w&8_BSLO~ec
zs5pU>+6iZwb3(<pIC*f!84=ogS7rS_0=Acg3;ziei_WLof^Es**5tNWFuCpV=YxsZ
z6Wgo2PRuEo$3iYrDx$cd^|>Y-5V%ttaNn+k?n@@0X@53X*tEUwhArPg<<a-lX~QY3
z!Vg*aH1U}%e3tmfEPRgmr!4$4@h@5UyjH8!xmhsTf#cd%rO}heY&me!PHMwSOiXE|
zo~F`Yc`kJT592rd&R>CbhF81i0eXGqsSZo8AnYjQ^9TKHd}{Eg5!qx!UeIn+%fzI%
zR(*$Y$JB-mGOipB+8u_ET$yn@46Y!1brE-v{{lT-um@6T5hYaeoT232yf?@=kyqCs
z8CU4}x5H!P?=<uCOhrx#HnH-qig{Kmu-RZ}%wHtKJ>Csv8HS7a%V4-<GH3(dQdaPp
zcZ%KvzIAn`H!yBhFpj_VxU^blVJOrPaWmH|c$Ici%P;6-^hX8FwK6(ge~%U2gG;zf
zKcGkFk-dBq(`01*+UmlUvV(<Po2T?jb7<d%8@sRuyRja<coKUcdFA^6;ude*;*A@;
zQlA61HMPw4AvWsTT>i#Q8RqxMycfmjBU?Wz@V?G0`wLWB%#{YS!B^}j(|)7YxBVTg
zH8)Tf&S;8RkughC%+#bk7Vxve_CO2cJ`Ge<XF6PO#nms(Sm0yEFK|e&ps45&BTpA?
zderQ01a0~x*;&b3`gBSCLl)am*82*;<w?OKQYaDOPzi@5JttStCE58g4sl`_FXptD
zS5$ZJFaH?c(#QxBj#gVgdQBMfwG3b<QH{A1ceF;#HJu}e@pQR~<HH!WKw=nU=>ytP
zN9zb)wBVS89fXpWXWf#Lo92!VBM&WsLPA|*+!6ID{WxIaL>gy_zJHnMXqM>cGSS_)
zQXO5YnlPhUryO%cm#ADOdI)`cpr)lBhGWnat#>v|BvW^f(iq(uLEQ9-kKpSAu$0Gq
ztSe-M+%jT(kW*oYoc<1!(VpS-pM`>R@bfke@CFUyJXX`AiQhqj^V8MMEAcfB*Dj9L
z2fUuX<V7{X;he!`5yZ5(8&||yTooH}O+11b@dB=k*ZCi@8?&Mp^I{(s#1W*#DclgV
zxS9F9#GE;vTxG5kFWib-UBKW14(6k_s)~ZIQmPHtm=nn7YL<g~UAO;Yk$Vd9O(BFG
GtNsUP{kJ{<

-- 
GitLab


From 3c8d0b3efd85bccddcdc17b1dc7c1e7d00c67227 Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Sun, 16 Feb 2025 23:36:49 -0700
Subject: [PATCH 07/17] done with refactor 2 on world splitting up and
 extracting methods all test pass like usual and running the gui is the same

---
 .../src/reworks2.java                         | 86 -------------------
 1 file changed, 86 deletions(-)

diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java
index 38a48a1..e69de29 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java	
@@ -1,86 +0,0 @@
-//public void attack(int index) {// new
-//    if(aWorld[tempRow][tempColumn] == null){
-//        return;
-//    }
-//    if((loc[index].getType() == 'O') && (aWorld[tempRow][tempColumn].getAppearance() == 'O')) {
-//        return;
-//    }
-//    if((loc[index].getType() == 'E') && (aWorld[tempRow][tempColumn].getAppearance() == 'E')) {
-//        return;
-//    }
-//    turnSinceAtk = 0;
-//    if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-//        attackLogic("elves");
-//    } else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-//        attackLogic("orcs");
-//    } else {
-//        loc[index].setCanMove(true);
-//    }
-//}
-//
-//void attackLogic(String attackingEntity){
-//    if (attackingEntity.equals("elves")) {
-//        entityDmg = Entity.ELF_DAMAGE;  // Define the Elf damage constant or value
-//    } else if (attackingEntity.equals("orcs")) {
-//        entityDmg = Entity.ORC_DAMAGE;  // Define the Orc damage constant or value
-//    }
-//
-//    HP = aWorld[tempRow][tempColumn].getHitPoints();
-//    aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-entityDmg);
-//    HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
-//
-//    if (GameStatus.debugModeOn) {//attack data for elf attackers
-//        debugAttack(attackingEntity);
-//    }
-//
-//    deathLogic(attackingEntity, index);
-//
-//    if (attackingEntity.equals("elves")) {
-//        if (orcCounter > 0) { //here
-//            return;
-//        }
-//    } else if (attackingEntity.equals("orcs")) {
-//        if (elfCounter > 0) { //here
-//            return;
-//        }
-//    }
-//
-//    System.out.println(entity + "win no more orcs left.");
-//    programRunning = false;
-//    if(GameStatus.debugModeOn) {//lose condition data
-//        debugLossConditions(attackingEntity);
-//    }
-//}
-//
-//public void debugAttack(String attackingEntity){
-//    if (attackingEntity.equals("elves")) {
-//        status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-//    } else if (attackingEntity.equals("orcs")) {
-//        status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-//    }
-//}
-//
-//public void debugLossConditions(String attackingEntity){
-//    if (attackingEntity.equals("elves")) {
-//        status.orcLoseDebug(orcCounter);
-//    } else if (attackingEntity.equals("orcs")) {
-//        status.elfLoseDebug(elfCounter);
-//    }
-//}
-//
-//public void deathLogic(String attackingEntity, int index){
-//    if (aWorld[tempRow][tempColumn].getHitPoints() >0){
-//        return;
-//    }
-//    aWorld[tempRow][tempColumn] = null;
-//
-//    if (attackingEntity.equals("elves")) {
-//        orcCounter--; //here  // Define the Elf damage constant or value
-//    } else if (attackingEntity.equals("orcs")) {
-//        elfCounter--; //here  // Define the Orc damage constant or value
-//    }
-//    sortDead();
-//    if(loc[index] != null) {
-//        loc[index].setCanMove(true);
-//    }
-//}
\ No newline at end of file
-- 
GitLab


From f48e707d4dd492bba6c38908c0350463543e4f3e Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Mon, 17 Feb 2025 12:14:10 -0700
Subject: [PATCH 08/17] refactor 3 done made elf and orc subclass seperated
 debugs into those classes and also move orc and elf counter to the entity
 class as i think that makes more sense for the entity to store the number of
 entities, tests all pass need to adjust some test with new class stuff

---
 .../assignment3GUI - Classmate's/src/Elf.java |  20 ++++
 .../src/Entity.java                           | 108 +++++++-----------
 .../src/FileInitialization.java               |  45 +++++---
 .../src/GamePanel.java                        |   4 +-
 .../assignment3GUI - Classmate's/src/Orc.java |  21 ++++
 .../src/World.java                            | 101 +++++++++-------
 .../src/refactor_1_test.java                  |  13 ++-
 .../src/reworks2.java                         |  62 ++++++++++
 out/production/501-gitlab/Elf.class           | Bin 0 -> 860 bytes
 out/production/501-gitlab/Entity.class        | Bin 1769 -> 1715 bytes
 .../501-gitlab/FileInitialization.class       | Bin 3374 -> 3308 bytes
 out/production/501-gitlab/GamePanel.class     | Bin 4923 -> 4913 bytes
 out/production/501-gitlab/Orc.class           | Bin 0 -> 859 bytes
 out/production/501-gitlab/World.class         | Bin 6511 -> 6271 bytes
 .../501-gitlab/refactor_1_test.class          | Bin 4866 -> 5048 bytes
 15 files changed, 242 insertions(+), 132 deletions(-)
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java
 create mode 100644 out/production/501-gitlab/Elf.class
 create mode 100644 out/production/501-gitlab/Orc.class

diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java
new file mode 100644
index 0000000..5cb8403
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java	
@@ -0,0 +1,20 @@
+
+public class Elf extends Entity {
+    public static final char ELF = 'E';
+    public static final int ELF_DAMAGE = 7;
+    public static final int ELF_HP = 15;
+
+    public Elf() {
+        super(ELF, ELF_HP, ELF_DAMAGE);
+    }
+
+    @Override
+    public void debugAttack(GameStatus status, int tempRow, int tempColumn, int targetRow, int targetColumn, int HP, int HPAfter) {
+        status.elfAttackDebug(tempRow, tempColumn, targetRow, targetColumn, HP, HPAfter);
+    }
+
+    @Override
+    public void debugLossConditions(GameStatus status, int entityCounter){
+        status.orcLoseDebug(entityCounter);
+    }
+}
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java
index b4427b1..936b9ef 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java	
@@ -1,65 +1,43 @@
-//Author Ethan McCorquodale
-
-/*
-  Version Feb 17A, 2021
-  * Added method so an Entity can damage another Entity.
-
-  Version: Feb 12A, 2021
-  * Added attribute to track if Entity has been moved or not.
-
-  Version: Feb 11B, 2021
-  * Changed references from dwarves to elves.
-  * Added a new damage attribute.
-
-*/
-
-// do i make sub classes for elf and Orc?
-
-public class Entity
+public abstract class Entity
 {
-    public static final char DEFAULT_APPEARANCE = 'X';
-    public static final char ELF = 'E';
+//    public static final char DEFAULT_APPEARANCE = 'X';
     public static final char EMPTY = ' ';
-    public static final char ORC = 'O';
-    public static final int DEFAULT_HP = 1;
-    public static final int ORC_DAMAGE = 3;
-    public static final int ELF_DAMAGE = 7;
-    public static final int ORC_HP = 10;
-    public static final int ELF_HP = 15;
+//    public static final int DEFAULT_HP = 1;
 
     private char appearance;
     private int hitPoints;
     private int damage;
-    
-    boolean attacking= false;
-    public Entity()
-    {
-        setAppearance(DEFAULT_APPEARANCE);
-        setHitPoints(DEFAULT_HP);
+
+    private static int orcCounter = 0;
+    private static int elfCounter = 0;
+
+    public Entity(char appearance, int hitPoints, int damage) {
+        this.appearance = appearance;
+        this.hitPoints = hitPoints;
+        this.damage = damage;
     }
 
-    public Entity(char newAppearance)
+    public abstract void debugAttack(GameStatus status, int tempRow, int tempColumn, int targetRow, int targetColumn, int HP, int HPAfter);
+    public abstract void debugLossConditions(GameStatus status, int entityCounter);
+
+    public char getAppearance()
     {
-        appearance = newAppearance;
-        hitPoints = DEFAULT_HP;
-        damage = ORC_DAMAGE;
+        return(appearance);
     }
 
-    public Entity(char newAppearance, int newHitPoints, int newDamage)
+    public int getHitPoints()
     {
-        setAppearance(newAppearance);
-        setDamage(newDamage);
-        setHitPoints(newHitPoints);
+        return(hitPoints);
     }
-   /* public void setAtt(boolean isAttacking) {
-    	attacking = isAttacking;
+
+    public void setAppearance(char newAppearance)
+    {
+        appearance = newAppearance;
     }
-    public boolean getAtt() {
-    	return attacking;
-    }*/
-    public char getAppearance()
+
+    public void setHitPoints(int newHitPoints)
     {
-        return(appearance);
+        hitPoints = newHitPoints;
     }
 
     public int getDamage()
@@ -67,32 +45,28 @@ public class Entity
         return(damage);
     }
 
-    public int getHitPoints()
-    {
-        return(hitPoints);
+    public static int getElfCounter() {
+        return elfCounter;
     }
 
-    public void setAppearance(char newAppearance)//changed this from private to public to change the entity appearance to ' '
-    {
-        appearance = newAppearance;
+    public static int getOrcCounter() {
+        return orcCounter;
     }
 
-    private void setDamage(int newDamage)
-    {
-        if (newDamage < 1) 
-        {
-            System.out.println("Damage must be 1 or greater");
-        }
-        else
-        {
-            damage = newDamage;
-        }        
+    public static void incrementElfCounter(int value) {
+        elfCounter = elfCounter + value;
     }
 
-    public void setHitPoints(int newHitPoints)
-    {
-        hitPoints = newHitPoints;
+    public static void incrementOrcCounter(int value) {
+        orcCounter = orcCounter + value;
+    }
+
+    public static void setElfCounter(int newElfCounter){
+        elfCounter = newElfCounter;
     }
 
+    public static void setOrcCounter(int newOrcCounter){
+        orcCounter = newOrcCounter;
+    }
+}
 
-}
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java
index bf5b57c..b4dcf48 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java	
@@ -100,25 +100,38 @@ public class FileInitialization
  
 
 
-    private static Entity createEntity(char letter)
-    {
-        Entity e = null;
-        switch(letter)
-        {
-            case Entity.ORC:
-                e = new Entity(Entity.ORC,Entity.ORC_HP,Entity.ORC_DAMAGE);
-                break;
+//    private static Entity createEntity(char letter)
+//    {
+//        Entity e = null;
+//        switch(letter) {
+//            case Entity.ORC:
+//                e = new Entity(Entity.ORC,Entity.ORC_HP,Entity.ORC_DAMAGE);
+//                break;
+//
+//            case Entity.ELF:
+//                e = new Entity(Entity.ELF,Entity.ELF_HP,Entity.ELF_DAMAGE);
+//                break;
+//            case Entity.EMPTY:
+//                e = null;
+//                break;
+//            default:
+//                System.out.println("Error: Invalid character [" + letter +
+//                                   "] in file");
+//        }
+//        return(e);
+//    }
 
-            case Entity.ELF:
-                e = new Entity(Entity.ELF,Entity.ELF_HP,Entity.ELF_DAMAGE);
-                break;
+    private static Entity createEntity(char letter) {
+        switch (letter) {
+            case 'O':
+                return new Orc();
+            case 'E':
+                return new Elf();
             case Entity.EMPTY:
-                e = null;
-                break;
+                return null;
             default:
-                System.out.println("Error: Invalid character [" + letter + 
-                                   "] in file");
+                System.out.println("Error: Invalid character [" + letter + "] in file");
+                return null;
         }
-        return(e);
     }
 }
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java
index 5a21c73..b78437f 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
@@ -121,7 +121,7 @@ public class GamePanel extends JPanel implements ActionListener{
 	@Override
 	public void actionPerformed(ActionEvent e) {
 		world.turnSinceAtk++;
-		for (int i = 0; i<world.elfCounter+world.orcCounter+5; i++) {//the +5 stops the case where when multiple entities die the sortDead() breaks by running this more times than it should it finds all elves/orcs separated by a null
+		for (int i = 0; i<Entity.getElfCounter()+Entity.getOrcCounter()+5; i++) {//the +5 stops the case where when multiple entities die the sortDead() breaks by running this more times than it should it finds all elves/orcs separated by a null
 			
 			if (GameStatus.debugModeOn == false) {
 				world.move(i);
@@ -140,7 +140,7 @@ public class GamePanel extends JPanel implements ActionListener{
 			}
 		}
 		
-		if (moveCount >= world.orcCounter+world.elfCounter+3) {//the +3 is there for the same reason the +5 is added to the for loop sortDead() sometimes leaves a null between entities and I cant figure out how to fix that so I use this buffer
+		if (moveCount >= Entity.getOrcCounter()+Entity.getElfCounter()+3) {//the +3 is there for the same reason the +5 is added to the for loop sortDead() sometimes leaves a null between entities and I cant figure out how to fix that so I use this buffer
 			moveCount = 0;
 		}
 		repaint();
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java
new file mode 100644
index 0000000..2984c89
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java	
@@ -0,0 +1,21 @@
+
+
+public class Orc extends Entity {
+    public static final char ORC = 'O';
+    public static final int ORC_DAMAGE = 3;
+    public static final int ORC_HP = 10;
+
+    public Orc() {
+        super(ORC, ORC_HP, ORC_DAMAGE);
+    }
+
+    @Override
+    public void debugAttack(GameStatus status, int tempRow, int tempColumn, int targetRow, int targetColumn, int HP, int HPAfter) {
+        status.orcAttackDebug(tempRow, tempColumn, targetRow, targetColumn, HP, HPAfter);
+    }
+
+    @Override
+    public void debugLossConditions(GameStatus status, int entityCounter){
+        status.orcLoseDebug(entityCounter);
+    }
+}
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java
index 2a3afdd..bdf9a52 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
@@ -12,8 +12,8 @@ public class World
     public static final int NOT_OVER = 4;
     private int i = 0; //creates a local index for the location array in the Display method.
     Location[] loc = new Location[100];//an array that'll track each entities type,location coordinates and if it can move.
-    int elfCounter = 0;
-    int orcCounter = 0;
+//    int elfCounter = 0;
+//    int orcCounter = 0; // moved to enitity
     int tempRow = 0;
     int tempColumn = 0;
     int oldRow;
@@ -60,16 +60,18 @@ public class World
 		System.out.print("|"+currentCellAppearance);
 		loc[i] = new Location(r,c,currentCellAppearance);//Initializes each Entities location/type
 		if (loc[i].getType() == 'O') {//this checks the type and counts +1 if it's an orc
-			orcCounter++;
+//			orcCounter++;
+			Entity.incrementOrcCounter(1);
 		}
 		if (loc[i].getType() == 'E') {
-			elfCounter++;
+//			elfCounter++;
+			Entity.incrementElfCounter(1);
 		}
 		i++;//Cause each initialization of the loc[i] to go to the next element
 	}
 
 	public void sortDead() {//supposed to try and sort null elements and bring them to the end doesn't always work as intended
-		for (int i = 0; i<=elfCounter+orcCounter;i++) {
+		for (int i = 0; i<=Entity.getElfCounter()+Entity.getOrcCounter();i++) {
 			if (loc[i] == null) {
 				continue;
 			}
@@ -85,7 +87,8 @@ public class World
 	}
 
 	public void sortLocations() {//puts the elfs in the beginning of the array, checks if there is an orc before and elf and if there is it swaps positions in the array
-		for (int j = 0; j<elfCounter+orcCounter; j++) {
+		int orcCounter = Entity.getOrcCounter();
+		for (int j = 0; j<Entity.getElfCounter()+orcCounter; j++) {
 			if (loc[j+orcCounter] == null){
 				continue;
 			}
@@ -115,61 +118,73 @@ public class World
 		}
 		turnSinceAtk = 0;
 		if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-			attackLogic("elves", index);
+			Entity attackingEntity = new Elf(); // Assuming Elf is a subclass of Entity
+			attackLogic(attackingEntity, index);
 		} else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
-			attackLogic("orcs", index);
+			Entity attackingEntity = new Orc();
+			attackLogic(attackingEntity, index);
 		} else {
 			loc[index].setCanMove(true);
 		}
 	}
 
-	public void attackLogic(String attackingEntity, int index){
-		int entityDmg = 0;
-		if (attackingEntity.equals("elves")) {
-			entityDmg = Entity.ELF_DAMAGE;  // Define the Elf damage constant or value
-		} else if (attackingEntity.equals("orcs")) {
-			entityDmg = Entity.ORC_DAMAGE;  // Define the Orc damage constant or value
-		}
+	public void attackLogic(Entity attackingEntity, int index){
+
+		int entityDmg = attackingEntity.getDamage();
+
+//		if (attackingEntity.equals("elves")) {
+//			entityDmg = Entity.ELF_DAMAGE;  //need to fix
+//		} else if (attackingEntity.equals("orcs")) {
+//			entityDmg = Entity.ORC_DAMAGE;
+//		}
 		HP = aWorld[tempRow][tempColumn].getHitPoints();
 		aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-entityDmg);
 		HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
 
 		if (GameStatus.debugModeOn) {//attack data for elf attackers
-			debugAttack(attackingEntity, index);
+			attackingEntity.debugAttack(status, tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+//		} else if (attackingEntity.equals("orcs")) {
+//			debugAttack(attackingEntity, index);
 		}
 		deathLogic(attackingEntity, index);
 		victoryLogic(attackingEntity);
 		if(GameStatus.debugModeOn) {//lose condition data
-			debugLossConditions(attackingEntity);
+			if (attackingEntity instanceof Elf) {
+				attackingEntity.debugLossConditions(status, Entity.getOrcCounter());
+			} else if (attackingEntity instanceof Orc) {
+				attackingEntity.debugLossConditions(status, Entity.getElfCounter());
+			} // maybe move counter to entity?
 		}
 	}
 
-	public void debugAttack(String attackingEntity, int index){
-		if (attackingEntity.equals("elves")) {
-			status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-		} else if (attackingEntity.equals("orcs")) {
-			status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-		}
-	}
+//	public void debugAttack(Entity attackingEntity, int index){
+//		if (attackingEntity.equals("elves")) {
+//			status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+//		} else if (attackingEntity.equals("orcs")) {
+//			status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
+//		}
+//	}
 
-	public void debugLossConditions(String attackingEntity){
-		if (attackingEntity.equals("elves")) {
-			status.orcLoseDebug(orcCounter);
-		} else if (attackingEntity.equals("orcs")) {
-			status.elfLoseDebug(elfCounter);
-		}
-	}
+//	public void debugLossConditions(Entity attackingEntity){
+//		if (attackingEntity instanceof Elf) {
+//			Entity.debugLossConditions(status, Entity.getOrcCounter());
+//		} else if (attackingEntity instanceof Orc) {
+//			Entity.debugLossConditions(status, Entity.getElfCounter());
+//		}
+//	}
 
-	public void deathLogic(String attackingEntity, int index){
+	public void deathLogic(Entity attackingEntity, int index){
 		if (aWorld[tempRow][tempColumn].getHitPoints() >0){
 			return;
 		}
 		aWorld[tempRow][tempColumn] = null;
 
-		if (attackingEntity.equals("elves")) {
-			orcCounter--; //here  // Define the Elf damage constant or value
-		} else if (attackingEntity.equals("orcs")) {
-			elfCounter--; //here  // Define the Orc damage constant or value
+		if (attackingEntity instanceof Elf) {
+//			orcCounter--;
+			Entity.incrementOrcCounter(-1);
+		} else if (attackingEntity instanceof Orc) {
+//			elfCounter--;
+			Entity.incrementElfCounter(-1);
 		}
 		sortDead();
 		if(loc[index] != null) {
@@ -177,17 +192,19 @@ public class World
 		}
 	}
 
-	public void victoryLogic(String attackingEntity){
-		if (attackingEntity.equals("elves")) {
-			if (orcCounter > 0) { //here
+	public void victoryLogic(Entity attackingEntity){
+		if (attackingEntity instanceof Elf) {
+			if (Entity.getOrcCounter() > 0) {
 				return;
 			}
-		} else if (attackingEntity.equals("orcs")) {
-			if (elfCounter > 0) { //here
+		}
+		else if (attackingEntity instanceof Orc) {
+			if (Entity.getElfCounter() > 0) {
 				return;
 			}
 		}
-		System.out.println(attackingEntity + "win no more orcs left.");
+		System.out.println(attackingEntity.getClass().getSimpleName() + " wins, no more opponents left.");
+//		System.out.println(attackingEntity + "win no more orcs left.");
 		programRunning = false;
 	}
 
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java
index 04413b8..33f5d6b 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java	
@@ -10,8 +10,11 @@ import javax.swing.*;
 class refactor_1_test {
     private static World world;
 
-//    @BeforeEach
-//    void setUp() {
+    @BeforeEach
+    void setUp() {
+        Entity.setOrcCounter(0);
+        Entity.setElfCounter(0);
+    }
 //        String simulatedInput = "Assignment_1/original_code/assignment3GUI - Classmate's/src/data.txt";
 ////        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
 //        InputStream originalSystemInStream = System.in;  // Save the original System.in
@@ -19,7 +22,7 @@ class refactor_1_test {
 //        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
 //        world = new World();  // This will call FileInitialization.read() and use the simulated input
 //        System.setIn(originalSystemInStream);  // Restore the original System.in
-//    }
+
 
     @Test
     void testBoardInitialization() {
@@ -35,8 +38,8 @@ class refactor_1_test {
         assertNotNull(world.aWorld, "Board should be initialized");
         assertEquals(World.SIZE, world.aWorld.length, "Board should have correct rows");
         assertEquals(World.SIZE, world.aWorld[0].length, "Board should have correct columns");
-        assertEquals(4, world.elfCounter); // check if right amount of elves and orcs
-        assertEquals(4, world.orcCounter);
+        assertEquals(4, Entity.getElfCounter()); // check if right amount of elves and orcs
+        assertEquals(4, Entity.getOrcCounter());
     }
 
     @Test
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java
index e69de29..ca4d021 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java	
@@ -0,0 +1,62 @@
+//public class Entity
+//{
+//    public static final char DEFAULT_APPEARANCE = 'X';
+//    public static final char EMPTY = ' ';
+//    public static final int DEFAULT_HP = 1;
+//
+//    private char appearance;
+//    private int hitPoints;
+//    private int damage;
+//
+//    public Entity(char appearance, int hitPoints, int damage) {
+//        this.appearance = appearance;
+//        this.hitPoints = hitPoints;
+//        this.damage = damage;
+//    }
+//
+//    public Entity(char newAppearance) {
+//        appearance = newAppearance;
+//        hitPoints = DEFAULT_HP;
+//        damage = ORC_DAMAGE;
+//    }
+//
+//    public char getAppearance()
+//    {
+//        return(appearance);
+//    }
+//
+//    public int getHitPoints()
+//    {
+//        return(hitPoints);
+//    }
+//
+//    public void setAppearance(char newAppearance)
+//    {
+//        appearance = newAppearance;
+//    }
+//
+//    public void setHitPoints(int newHitPoints)
+//    {
+//        hitPoints = newHitPoints;
+//    }
+//}
+//
+//public class Orc extends Entity {
+//    public static final char ORC = 'O';
+//    public static final int ORC_DAMAGE = 3;
+//    public static final int ORC_HP = 10;
+//
+//    public Orc() {
+//        super(ORC_APPEARANCE, ORC_HP, ORC_DAMAGE);
+//    }
+//}
+//
+//public class Elf extends Entity {
+//    public static final char ELF = 'E';
+//    public static final int ELF_DAMAGE = 7;
+//    public static final int ELF_HP = 15;
+//
+//    public Elf() {
+//        super(ELF_APPEARANCE, ELF_HP, ELF_DAMAGE);
+//    }
+//}
\ No newline at end of file
diff --git a/out/production/501-gitlab/Elf.class b/out/production/501-gitlab/Elf.class
new file mode 100644
index 0000000000000000000000000000000000000000..0525cda227418ddd6a15bdece22c951fbeeeb6d0
GIT binary patch
literal 860
zcmZ8f+iuf96r9b)&c&%iLV!XG<?c36;1LxeMQ++eN>S9Jydo#r6oX?UXAR<+FXE+0
zJn#X06k^s+L#Zu!XU^`KGv|1J|M~d~fQuI<asv5oFsq<|q6x!-iIRZP4VACH61?(5
zU%e)9+<t$1R6zw*6PAS<)&wet-dvt2PbCY1H5tr0N_mry`*NI|3Y49G`ebQ!3s=w(
zu%dV}h!%2rsNhgmn;0Aj2v?xyM&Uwvp&EHXBJ(ubWg%|A+wUB84oO5`M@?;$(cVxq
zn-Y!|D!9>93fKcbly8#xSjKO?allAp5KX*b<i)<`%V0sh_i4R2;0*Qzs#EPeYeJyq
z4F2`Ecis!j(q7uJb#Y(7RC505IQl}n8o5!B%tMYrdGV=K>4ufz^Q~NO$h6+DGgC4a
zXr|>koCRkv^_9;_2-N?#p_{D9^#8a~5~hijlPHNN^1#=Pme|Yg2k*0oyWl)HoIKXi
z#8t8uSq|68uj9swuan=rz;7{wzOcdXCNo}AMR2X|)Vp=NZvH_2dn$CB-wFkR64x^B
z5Lww#Y_U9u@8SMZ=9|7;jM?pt%~qjRY#A-{4CTvGyjgs;)NyuvDaAxQz{6DD#v}UG
zg>5`0O0NJMBHgczZK7g|c8H7=wTVn-Kf%+bp&k`<rqSLwgMHaYg9^>m$5wV~<-=I{
QFtAJ29QB@2Cx_>M0XpxCuK)l5

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/Entity.class b/out/production/501-gitlab/Entity.class
index 1a7225408c2d8713f9069a3d35ecc3c6127ad800..aa7db3365dade88deee1070225c68799f3e59c41 100644
GIT binary patch
literal 1715
zcmZ`(Yi|-!5Iq+b3Uuk)R@?fvO7T(OT3f5QQcHp@(c0)I-O{zL(#60<<A3stkH*9g
z{s4cJ@yuPs1(AfkJ9E#RnKLu+^Vjzu036)QAcpt=EE@?V6-HjW@7#r&8|*G@Y`^xZ
zS|PdY2fkiWi09_F(nujafQ*en*t{zS+SeZxGVa^Ap4)JPs;8hFfeqOh#)v}tm9Hyx
zKhRCyl;md2#<<)hcicU9*Av$P8<XP7c(s>Ky%lJ$A?|}V4jFg7QEj^w#_kta3s1_M
z&kL1GvGAy{?i3ZWPCaO9H_%&dt>wij?x{ke_^`71OpIfs{u8!V5sza2oKq^zZz)(#
zeTQ`qm;Jz7Z|!Y+jZJsEM$cHeUUh3*Zo?P5?X>hOpITDoQ2dg@;EuQ5+AV19R^KQb
z$dw<sd){O1>Q-~9WImE*+@Q+!W|Ot<_}XX1?07d?fZ1J77b5*+;~fQ?-nGB2q_ae5
zvm0vV9K#TJ@1qPhVUbuXXJp$%MZ9SyxNjyBmQd`BBD6OmGZ^=SYQx*}0v$yq-bwSR
zv~wGcky@kZEYo+{yzj#EK5D0ytF`tjW**mDjjFfm%a8`cIb4v{wT^RZVjORZi!%)y
z3Ny4~n5BI<VjrP>6eFGcW5jT!4VG(bPA)0WjI5wJxuHCV8I!<qK2Ol9G0x&Sk^csj
zpV`Mies&+({Na6!exg5ylYCAx0vIB47-_N$VU$0CF`S||AI4)2r)iPN)S=9qR3d67
z<OhSerEms0fag5pxWqV%bL~nNcuG_v{}lrt`4Xm18s{OCO4>m{JC(wDT%bo}M1!-v
z!AJTAFW_Q3c!jB?%B0c%SGD}Nfcg`R7p0RSs-rZCOJ*VpmvN;ZSGJccN3Qw*a9w4G
zqyyLbiW=<|b-s_NG_H4oXGtX=>oX=KR+&MD-Mqvh-sp#%>P227@@7Ze4K_en)8w3f
z@dXpT`WCsjw<3k5u}D=6p!ZLQA|z8nGSy3Rn<OiJNtQY!LS}Yhx=$4aZsffPK?2L|
xDsJ~B_@{y*30AuZRt!N3cOV^<jhi$1DJ@P3{F+{bO%C^FkR-COcL|Q6@Eax}`85Cl

literal 1769
zcmZuyU2_^`7(Fj65a=dB(qPjhO4U}fZG&m8U#Y3MAq`3b4U|cHVcgIix)qiTEIR!=
z-gx7Uj)^l~_yhb=PS3Nu4Vw%%?4IX&pL3qCclq!CfBpqv;%Npk#8c38B#>0dzOsI{
zN<GW%mg>i^?2f09eCW82x1|s-uC>#cK{|zujw{gVtGJ%yy;ewDo@aG_a@?+hdY<8_
zIUV!JD$I^-uY7W1TSLq3*a}+FTx-jLoQ?%tRnU20*YO$y$Mr_yuLd%C9q;0rLdJ?j
zD^oJKu45T1RDC&#Q&sW2r{jI`Bwtv4t80tS4ILkdPMSK~zBP@Ha5IHlIzC46Le0(B
zBhT)$)WMjQFV_5SID=AS$mE*d(6;)UGcXjE1ExZMJn{<1c44D17#6zpd-gDcJGh&|
zx{eY)QCOHlqL4Zf%AQM=Vj$x;of_=n=2}}Jw_VvOKdrTn%8f>)d{EvuE9|B@a7Uiy
zdTpyWw&R@PA+xR2cI1`*L}jnhdM2Pid;P$a*E*Z{mTb2n7DWr4N89DS^5cqF;<S(^
zVo9-!awdq#$gt@T&^+g44qkAa^EJn{_s9KXd)Ts$d$i<ggO1f}TSG^1Xw<xy4u?Ba
z3l?URmALjV(Y;6(%_=9)eV`+<4{5@n*^KF4+$C<L$-&b4_5>|eQqU5im~F~#?pY^c
zGMVOJJnYyzj--1f$Y@=rgd5zK7`rixC2Zgt6z&nlaG&_o2!25PSp<Jh{6z$RN&FR7
z&f_<UA4c%k#9I;ki1?cbE)#zn!6tLyW$<(1=KD|XIiHY=$lo-zc!T-7O;qQ3#pj~&
zH<S@SMasw?o?+I|&hXA3bi`2MZ=NCGWzcv-(zwYBdka^2DRyYp0|Gq8E|HLDLvoAJ
z(xjyc`SK~Hv{Rarr&yf`TxUjr5enSK9IwU#?y{0~UnCz8g(9Rx)$gLneHY4&c}BY=
zC#9^Op<t|Bs3(xy2<7fk?mp#Ya1VSrNkl|~nkI7c_C4F_SA`ni;uPP*ewaduPibeu
z_zR1_^Cf7XbQ_%Gq+N;gcGc0C61;jj*qj>tWNPrz<>1|^!Tjom%3I7+N=h0spUG6@
zn-7+kV1bf*FoooKTaw`vV)Ee(xqb|}^2^$<nEMkS=GM+|`!~!8w?FZ?zfw8B#RueW
yF^@wm;(0_Pf3A`D+pKUveGRd!MjiegOv`-fa^^pf{V2j3&0NMP!)lT@hSnPki2kww

diff --git a/out/production/501-gitlab/FileInitialization.class b/out/production/501-gitlab/FileInitialization.class
index 55f7e6375b1e5bf7b59a8bef35d2a4ca2d887255..8b36fc1a1fd30df72327c802163fef496a7e9846 100644
GIT binary patch
delta 497
zcmX|;%}X0m6vcnfnPielB34B(E5$%5iZ1%GE20<>T!<n_HWIXiYSl#hZH@7}sb7dg
zs~b0N3uQ2%P<O?Ze@PelAKEj6xH$LS_ujeZo_F7`biLibwL7iR<r$X(mcyLE%FY*D
zX0e(vEF>9bvG&)#FtzW|J7bDoKGycQ1VnWW9V{s(!#u(=Z?%i_j`un#dgrk}rsU=0
zl}f-WkzkxheBdKCS^D_IXDs@8$%?WDc1ZDsRVl2|N?9?+sZge(80U<2Tqz~^!G?H-
zMm#pzA|l;mwxtkN<srL##i1&0mDoSLDfdv`>uy<o<`N^hz|XiehwnQ&45;p#I!1N#
zD%4b>EYLLaHXUj<h(E~~d-C1H1p9Jf)1s3Db&XK<8k60XqAHJ66HI6*{WB2axnKz$
z!c!qDbPJ<G*A0c-HLv{}X0^WYjekjJ`Zx1%#S`O;V`+Yn4*iwMXd*qD!85)6g&Ypb
X-NR3`G87Iuczp0tcE)kcNviihj(Aim

delta 579
zcmXYv&1(};6vclpnNB8?(M)R)npF!CYzvlxJJDigXsUr~kZ8e`NN8$1ts1qht?{Fu
zYET?d*KS-0QY~0ea8X?PH@I`>pCIU&iHkGu-aF@=ciz44ckhSd&UdS12Vt|(Tym+?
z@aSU3U>`j*F)>i<!7%GlW^VVF_10vaN{4!4cisMBPKCg*C`N17;2!3qf)w-m+DWmG
z1;t*6zzuFH%W{jRDq-~8**Ei1HQQ>%tOasZ>E<?fum~i4mqpTya*`!QDb_i_GWVo#
zp8_ka;_zBnQSPYvh8C`ra=hY!c!q;SJmit?)XfVXvnF2!+EUse!=|`fIDd)GyKNIj
zKiyUNxsp3K75k}5v;6<W45zhkODEd;b1l(SpeWWf@^&@ROo@Mq3vA1`&qbcdg~cIN
zp7KmCHeY%}t+;FZN>W-cn@aJ$)^Q;%^a*1^AdCo;LjPClQ~spy+Ivh_-f<+!13&L)
zI)#E!HUEkJ;uo&NX9k9Lv@e|uVlZh*L#NG9VvdnAA;&d~F-;@TB*xY8v+8wCy^ZgE
gxMM7tLp;rz`rFnW<8JA7{GpVgp7*U>^vyf=4;yG=o&W#<

diff --git a/out/production/501-gitlab/GamePanel.class b/out/production/501-gitlab/GamePanel.class
index 91fe0cc0bbae24617fed89744a345f5612f04abd..39a516068da289acbda3700081911d0e30e70d75 100644
GIT binary patch
delta 268
zcmdn3woz@vK2~imhJ1#FJPeB%CNeVcrl*#;=A=32m*$nE7J+1z@GvZe$@p)6%(|Z2
zGLC^62pJf5Xl-E-j@-g9mnC5<!(3)tnH>xZb}%eX;7C}+AijxV*(?TbkP4Y?3~O4L
z7?=NlH2JciKMPRBj>&pLUiC5zbqq=j^$c1JH4Fv}O$=rX%?yqVEex&<tqeX4?F>N-
z9SkuHoeU`qT@1wx-3-+X{XlX85Kdy4!Z4X(HjrG-FqL6F!!(BN3^N#R0G*@&bQnK_
xBEt&?9tI|m6B%wY+yc@d)=P$042%r-fowho_CE}q{ESk+7+9tCL?#Ja0{{x{My&t<

delta 279
zcmXYrze_@46o#LxUDEu>vZ0|nM3|66LsJk5(o_&GEj8UCn?xaOG7`!tb1=FVQ3$41
zLqWf8H3T)*+LkV@*&pB#L4BXa8J_n%=M3*v;307Ns1Lg7;z&?NXmmtl3loW@crv=E
zbX9QN(utdfe&Gqnams<0piR%LO|i|qrRW?t)NWJyL&bENWqPkUIl!ZoamRVap`HHJ
zt=H~|`2T9b^82RJepU#QW`t!%StZ08lVq4?of$TmW0QHZ#MmN5PG0jIvQ3E{s#u&+
z;GSKc*yEXf-ekpoS=7rA9|#<(GBxUwDmC~-<6Y)X+P`sowSh16zG1^^`o?|%3K&Rp

diff --git a/out/production/501-gitlab/Orc.class b/out/production/501-gitlab/Orc.class
new file mode 100644
index 0000000000000000000000000000000000000000..3ded1a310dffbbd838082e1f5c38e04f123b0a2e
GIT binary patch
literal 859
zcmZ8f+iufP5S){X-MCI1ni?pyQ0{I61>TT~kRrD<kphWQlvm^=rWg_%ImaNL`66D5
z!~-9|M<M1Mr=irAt=T=hvomY|{`2z}03T0H6a<RBbZnu7vI)b6i4_6kFqV=0O7J|2
zBl&{B^E;iLp#=-8CTts3)C8=fU=|+BKxT7+T9S@iQU>FX2jM6?5vX__edTR+8<(&q
zV6&{7%)>=d$s?^2G4KThpQ@k4a~Z^P7)-OUNTEFr;_=&q)~nXhA*(tnTcjwJZTD4V
zk-}3%B|n*j0!}xI!`Int6sB*2(Uh6BZZZz0!yt`RyhxVh`-sxZUG89CV0EID=OzSP
zulvv6{+Sn!r9AD}K7TG?%5e5+kbI$Bh5Tfi&0?-W2I)yC^?{w^v!g=0&$f2I^-hMV
zKtqq`a^~E@B$5#~AyEHchB8?V_4o0UEY^+IagwFu@MWZouF%Wghv0L7Ti`y_s<43u
z))~2s3b@Sp3a&2W4aV2b#n;(EUD)J%iyhC%BGi(1>%F>V{6O)$=DDGA<O3?aE!-rs
z^Ga-UI*4!M&VuEe`nQ;Knwwj0$t}BvYo4NVk*bCo98ERI%NJB^#9iFe^bYP*t{Uv%
z0g?Ix9C$>^u7e$-vPQc^hDJ>ylid&TXd$Rg2GwaaH&5YQ)X^Zry4JCsS1olIOC1LG
N$XX!ZWAYU6<S(6Gi~#@u

literal 0
HcmV?d00001

diff --git a/out/production/501-gitlab/World.class b/out/production/501-gitlab/World.class
index ec16af92db7fb84aac15086e52800370a82dcba9..c6a8de9779748e7c94c66e3f1d77e7ac167908f7 100644
GIT binary patch
literal 6271
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

literal 6511
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

diff --git a/out/production/501-gitlab/refactor_1_test.class b/out/production/501-gitlab/refactor_1_test.class
index a65f06e71ad125eed976952294dca3078788afe0..4bba1bf5463ecf4ceb3177ba4521b7de6e647438 100644
GIT binary patch
literal 5048
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
B9LxX!

literal 4866
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
P8)u>%{X71Nf1~;Tf3fU(

-- 
GitLab


From f6a208e3d10d4cf270a140a540e693b0e01ebd57 Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Mon, 17 Feb 2025 14:02:40 -0700
Subject: [PATCH 09/17] Done refactor 4 did a bunch of smaller things mainly
 changed names of variables for example instead of r,c i made it row and
 column since i think this is much easier to read, also changed g to grapghics
 in the draw methods in GamePanel and many more. I also deleted unused
 variables like ELf victory = 1 and many more i also delted unused commented
 out code and fixed all warning from the original code. Changed if statements
 from if(a==true) ot just if(a) and same for !a. Also some other smaller
 refactors here and there

---
 .../src/World.java                            |   2 +-
 .../assignment3GUI - Classmate's/src/Elf.java |   2 +-
 .../src/Entity.java                           |   5 +-
 .../src/FileContainer.java                    |  12 +-
 .../src/FileInitialization.java               | 103 ++++-------
 .../src/GamePanel.java                        | 126 +++++++------
 .../src/GameStatus.java                       |  18 +-
 .../src/Location.java                         |   3 -
 .../src/World.java                            | 172 +++++++-----------
 .../src/refactor_1_test.java                  |  19 +-
 .../src/reworks.java                          |   2 +-
 out/production/501-gitlab/Elf.class           | Bin 860 -> 860 bytes
 out/production/501-gitlab/Entity.class        | Bin 1715 -> 1639 bytes
 .../501-gitlab/FileInitialization.class       | Bin 3308 -> 3157 bytes
 out/production/501-gitlab/GamePanel.class     | Bin 4913 -> 4918 bytes
 out/production/501-gitlab/GameStatus.class    | Bin 2785 -> 2706 bytes
 out/production/501-gitlab/World.class         | Bin 6271 -> 6086 bytes
 .../501-gitlab/refactor_1_test.class          | Bin 5048 -> 5050 bytes
 18 files changed, 192 insertions(+), 272 deletions(-)

diff --git a/Assignment_1/original_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/original_code/assignment3GUI - Classmate's/src/World.java
index 73af68f..d2e0b97 100644
--- a/Assignment_1/original_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/original_code/assignment3GUI - Classmate's/src/World.java	
@@ -182,7 +182,7 @@ public class World
     	return false;
     }
     public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
-    	if (checkPerim(index) == false) {//checks the perim for things not null if it finds something it returns true and the move code below doesn't run 
+    	if (checkPerimiter(index) == false) {//checks the perim for things not null if it finds something it returns true and the move code below doesn't run
     		if (loc[index] != null) {
             		if (loc[index].getCanMove()) {
             			if((loc[index].getRow()-1 != -1)&&(loc[index].getColumn()-1 != -1)) {
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java
index 5cb8403..8647719 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java	
@@ -15,6 +15,6 @@ public class Elf extends Entity {
 
     @Override
     public void debugLossConditions(GameStatus status, int entityCounter){
-        status.orcLoseDebug(entityCounter);
+        status.elfLoseDebug(entityCounter);
     }
 }
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java
index 936b9ef..aa1e351 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java	
@@ -1,12 +1,11 @@
 public abstract class Entity
 {
-//    public static final char DEFAULT_APPEARANCE = 'X';
+    //removed unused
     public static final char EMPTY = ' ';
-//    public static final int DEFAULT_HP = 1;
 
     private char appearance;
     private int hitPoints;
-    private int damage;
+    private final int damage; // added final as damage never changes
 
     private static int orcCounter = 0;
     private static int elfCounter = 0;
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileContainer.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileContainer.java
index 1b80fc0..df04622 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileContainer.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileContainer.java	
@@ -3,23 +3,23 @@ import java.io.BufferedReader;
 
 public class FileContainer
 {
-    private BufferedReader br;
-    private FileReader fr; 
+    private final BufferedReader bufferReader; //these don't change so made them final
+    private final FileReader fileReader;
 
     public FileContainer(BufferedReader aBufferedReader, 
                          FileReader aFileReader)
     {
-        br = aBufferedReader;
-        fr = aFileReader;
+        bufferReader = aBufferedReader;
+        fileReader = aFileReader;
     }
 
     public BufferedReader getBufferedReader()
     {
-        return(br);
+        return(bufferReader);
     }
 
     public FileReader getFileReader()
     {
-        return(fr);
+        return(fileReader);
     }
 }
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java
index b4dcf48..45d672f 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java	
@@ -33,32 +33,32 @@ public class FileInitialization
 {
     public static Entity[][] read() {
         Entity [][] temp = new Entity[World.SIZE][World.SIZE];
-        String line = null;
-        int r, c;
+        String line; // changed to this as it's going to be null regardless
+        int row, column; // changed from r and c so its more readable
         char letter;
-        BufferedReader br = null;
-        FileReader fr = null;
-        FileContainer aContainer = null;
+//        BufferedReader bufferReader = null;
+//        FileReader fileReader = null; 
+        FileContainer aContainer; // changed to this as it's going to be null regardless
         try {
-            aContainer = checkingFile(br,fr);
-            br = aContainer.getBufferedReader();
-            fr = aContainer.getFileReader();
-            line = br.readLine();
+            aContainer = checkingFile();
+            BufferedReader bufferReader = aContainer.getBufferedReader(); //changed name from br
+            FileReader fileReader = aContainer.getFileReader(); // changed name from br so its more readable 
+            line = bufferReader.readLine();
             if (line == null)
                 System.out.println("Empty file, nothing to read");
-            r = 0;
+            row = 0;
             while (line != null) {   
-                c = 0;
-                while(c < World.SIZE) {
-                    letter = line.charAt(c);
-                    temp[r][c] = createEntity(letter);
-                    c = c + 1;
+                column = 0;
+                while(column < World.SIZE) {
+                    letter = line.charAt(column);
+                    temp[row][column] = createEntity(letter);
+                    column = column + 1;
                 }
-                line = br.readLine();
+                line = bufferReader.readLine();
                 if (line != null)
-                    r = r + 1;
+                    row = row + 1;
             }
-            fr.close();
+            fileReader.close();
         }
         catch (FileNotFoundException e) {
             String location = System.getProperty("user.dir");
@@ -71,21 +71,23 @@ public class FileInitialization
         return(temp);
     }
     
-    private static FileContainer checkingFile(BufferedReader br, FileReader fr)
+    private static FileContainer checkingFile()
     {
-        FileContainer aContainer = null;    
+        FileContainer aContainer; // changed to this as it's going to be null regardless
         Scanner in = new Scanner(System.in);
-        String filename = null;
-        boolean fileFound = false;
-        while (fileFound == false)
+        String filename; // changed to this as it's going to be null regardless
+//        boolean fileFound = false;
+        while (true) // changed to this as it's still if false
         {
             try
             {
                 System.out.print("Name of file containing starting positions: ");
-                filename = in.nextLine();   
-	            fr = new FileReader(filename);
-                br = new BufferedReader(fr);
-                fileFound = true;
+                filename = in.nextLine();
+                FileReader fileReader = new FileReader(filename);
+                BufferedReader bufferReader = new BufferedReader(fileReader);
+//                fileFound = true;
+                aContainer = new FileContainer(bufferReader, fileReader);
+                return aContainer;
             }
             catch (FileNotFoundException ex)
             {
@@ -93,45 +95,20 @@ public class FileInitialization
                 System.out.println("Input file not in " + location);
             }
 
-         }
-         aContainer = new FileContainer(br,fr); 
-         return(aContainer);
+        }
+//        aContainer = new FileContainer();
+//        return(aContainer);
     }
- 
-
-
-//    private static Entity createEntity(char letter)
-//    {
-//        Entity e = null;
-//        switch(letter) {
-//            case Entity.ORC:
-//                e = new Entity(Entity.ORC,Entity.ORC_HP,Entity.ORC_DAMAGE);
-//                break;
-//
-//            case Entity.ELF:
-//                e = new Entity(Entity.ELF,Entity.ELF_HP,Entity.ELF_DAMAGE);
-//                break;
-//            case Entity.EMPTY:
-//                e = null;
-//                break;
-//            default:
-//                System.out.println("Error: Invalid character [" + letter +
-//                                   "] in file");
-//        }
-//        return(e);
-//    }
 
     private static Entity createEntity(char letter) {
-        switch (letter) {
-            case 'O':
-                return new Orc();
-            case 'E':
-                return new Elf();
-            case Entity.EMPTY:
-                return null;
-            default:
+        return switch (letter) {
+            case 'O' -> new Orc();
+            case 'E' -> new Elf();
+            case Entity.EMPTY -> null;
+            default -> {
                 System.out.println("Error: Invalid character [" + letter + "] in file");
-                return null;
-        }
+                yield null;  // 'yield' is used to return a value from the block
+            }
+        };
     }
 }
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java
index b78437f..73314a0 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
@@ -7,22 +7,21 @@ import java.awt.event.KeyAdapter;
 import java.awt.event.KeyEvent;
 import javax.swing.JPanel;
 import javax.swing.Timer;
+// removed unused import
 
-
-
-import java.util.Scanner;
 //Author Ethan McCorquodale
 
 /*
  	Version 3/4/2021: I got the graphical portion setup and functional still need to attach it logically
  					  to the World class and have sprites to represent elves/dwarves
- 	Version 3/5/2021: I got the sprites setuap correctly, I'm having issues with having them behave correctly though the attack() method
+ 	Version 3/5/2021: I got the sprites setup correctly, I'm having issues with having them behave correctly though the attack() method
  					  in the World class needs some tweaking I'm pretty sure as it's a logical error that's occurring (orc isn't attacking 
  					  elf after it's told to stop moving when the space it's moving to is occupied)
  	Version 3/9/2021: Finally fixed that weird bug that would cause issues when one entity dies, I did so by adding a sortDead method
  					  at this point the program runs without any bugs and meets the design specifications I just need to add Debug mode now
  */
 public class GamePanel extends JPanel implements ActionListener{
+	// removed unused variables like system.in
 	static final int Height = 300;
 	static final int Width = 300;
 	static final int gridSize = 30;
@@ -30,7 +29,6 @@ public class GamePanel extends JPanel implements ActionListener{
 	final int Delay = 1;
 	int moveCount = 0;
 	World world = new World();
-	Scanner in = new Scanner(System.in);
 	Timer timer;
 	GamePanel()	
 	{
@@ -45,85 +43,85 @@ public class GamePanel extends JPanel implements ActionListener{
 		timer = new Timer(Delay,this);
 	}
 	
-	public void paintComponent(Graphics g) {
-		super.paintComponent(g);
-		drawWorld(g);
+	public void paintComponent(Graphics graphics) { // changed g to graphics since I don't like single letter variables
+		super.paintComponent(graphics);
+		drawWorld(graphics);
 	}
 	
-	public void drawWorld(Graphics g) {
-		for (int r = 0; r<world.SIZE;r++) {
-			for (int c = 0; c<world.SIZE; c++) {
-				if(world.aWorld[r][c] == null) {
-				g.setColor(Color.white);
-				g.fillRect(0+c*gridSize, 0+r*gridSize, gridSize, gridSize);
-				g.setColor(Color.black);
-				g.drawRect(0+c*gridSize, 0+r*gridSize, gridSize, gridSize);
+	public void drawWorld(Graphics graphics) {
+		for (int row = 0; row<World.SIZE;row++) { //fixed static warning
+			for (int column = 0; column<World.SIZE; column++) {
+				if(world.aWorld[row][column] == null) {
+				graphics.setColor(Color.white);
+				graphics.fillRect(column*gridSize, row*gridSize, gridSize, gridSize); // removed unnecessary 0+
+				graphics.setColor(Color.black);
+				graphics.drawRect(column*gridSize, row*gridSize, gridSize, gridSize); // removed unnecessary 0+
 				} 
-				else if(world.aWorld[r][c].getAppearance() == 'E') {
-					drawElf(g, c*gridSize, r*gridSize);
-				} else if (world.aWorld[r][c].getAppearance() == 'O') {
-					drawOrc(g,c*gridSize,r*gridSize);
+				else if(world.aWorld[row][column].getAppearance() == 'E') {
+					drawElf(graphics, column*gridSize, row*gridSize);
+				} else if (world.aWorld[row][column].getAppearance() == 'O') {
+					drawOrc(graphics,column*gridSize,row*gridSize);
 				}
 			}
 		}
 	}	
-	public void drawOrc(Graphics g, int x, int y) {
+	public void drawOrc(Graphics graphics, int x, int y) {
 		
 		int[] xCoord = {x+6,x+19,x+elfSize/2+5};
 		int[] yCoord = {y+10,y+10,y};
 		Color orcGreen = new Color(21,158,26);
-		g.setColor(Color.white);
-		g.fillRect(x,y, gridSize, gridSize);//sets the background of that grid square white
-		g.setColor(orcGreen);
-		g.fillOval(x+5, y+7, elfSize, elfSize+3);
+		graphics.setColor(Color.white);
+		graphics.fillRect(x,y, gridSize, gridSize);//sets the background of that grid square white
+		graphics.setColor(orcGreen);
+		graphics.fillOval(x+5, y+7, elfSize, elfSize+3);
 
-		g.setColor(Color.black);
-		g.drawOval(x+5, y+7, elfSize, elfSize+3);
-		g.setColor(orcGreen);
-		g.fillOval(x+13,y+9,5,7);//draws right eye
-		g.fillPolygon(xCoord, yCoord, 3);//fills in hat
-		g.setColor(Color.black);
-		g.drawPolygon(xCoord, yCoord, 3);//draws outline for hat
-		g.fillOval(x+7,y+9,5,7);//draws left eye
-		g.fillOval(x+13,y+9,5,7);//draws right eye
+		graphics.setColor(Color.black);
+		graphics.drawOval(x+5, y+7, elfSize, elfSize+3);
+		graphics.setColor(orcGreen);
+		graphics.fillOval(x+13,y+9,5,7);//draws right eye
+		graphics.fillPolygon(xCoord, yCoord, 3);//fills in hat
+		graphics.setColor(Color.black);
+		graphics.drawPolygon(xCoord, yCoord, 3);//draws outline for hat
+		graphics.fillOval(x+7,y+9,5,7);//draws left eye
+		graphics.fillOval(x+13,y+9,5,7);//draws right eye
 		
-		g.drawLine((x+5)+(elfSize/3), y+elfSize+10, (x+5)+(elfSize/3), y+elfSize+13);//left foot line 1
-		g.drawLine((x+5)+(elfSize/3), y+elfSize+13, x+6, y+elfSize+13);//left foot line 2
-		g.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+10, (x+5)+elfSize-(elfSize/3), y+elfSize+13);
-		g.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+13, (x+5)+elfSize-(elfSize/3)+5, y+elfSize+13);
-		g.drawRect(x,y, gridSize, gridSize);
-		g.drawString("HP: "+world.aWorld[y/gridSize][x/gridSize].getHitPoints(), x, y);
+		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+10, (x+5)+(elfSize/3), y+elfSize+13);//left foot line 1
+		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+13, x+6, y+elfSize+13);//left foot line 2
+		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+10, (x+5)+elfSize-(elfSize/3), y+elfSize+13);
+		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+13, (x+5)+elfSize-(elfSize/3)+5, y+elfSize+13);
+		graphics.drawRect(x,y, gridSize, gridSize);
+		graphics.drawString("HP: "+world.aWorld[y/gridSize][x/gridSize].getHitPoints(), x, y);
 	
 	}
-	public void drawElf(Graphics g, int x, int y) {
+	public void drawElf(Graphics graphics, int x, int y) {
 		
 		int[] xCoord = {x+5,x+20,x+elfSize/2+5};
 		int[] yCoord = {y+7,y+7,y};
-		g.setColor(Color.white);
-		g.fillRect(x,y, gridSize, gridSize);
-		g.setColor(Color.green);
-		g.fillRect(x+5, y+7, elfSize, elfSize);
+		graphics.setColor(Color.white);
+		graphics.fillRect(x,y, gridSize, gridSize);
+		graphics.setColor(Color.green);
+		graphics.fillRect(x+5, y+7, elfSize, elfSize);
 	
-		g.fillPolygon(xCoord, yCoord, 3);
-		g.setColor(Color.black);
-		g.drawPolygon(xCoord, yCoord, 3);
-		g.drawRect(x+5, y+7, elfSize, elfSize);
-		g.fillOval(x+7,y+9,5,7);
-		g.fillOval(x+13,y+9,5,7);
+		graphics.fillPolygon(xCoord, yCoord, 3);
+		graphics.setColor(Color.black);
+		graphics.drawPolygon(xCoord, yCoord, 3);
+		graphics.drawRect(x+5, y+7, elfSize, elfSize);
+		graphics.fillOval(x+7,y+9,5,7);
+		graphics.fillOval(x+13,y+9,5,7);
 		
-		g.drawLine((x+5)+(elfSize/3), y+elfSize+7, (x+5)+(elfSize/3), y+elfSize+13);
-		g.drawLine((x+5)+(elfSize/3), y+elfSize+13, x+6, y+elfSize+13);
-		g.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+7, (x+5)+elfSize-(elfSize/3), y+elfSize+13);
-		g.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+13, (x+5)+elfSize-(elfSize/3)+5, y+elfSize+13);
-		g.drawRect(x,y, gridSize, gridSize);
-		g.drawString("HP: "+world.aWorld[y/gridSize][x/gridSize].getHitPoints(), x, y);
+		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+7, (x+5)+(elfSize/3), y+elfSize+13);
+		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+13, x+6, y+elfSize+13);
+		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+7, (x+5)+elfSize-(elfSize/3), y+elfSize+13);
+		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+13, (x+5)+elfSize-(elfSize/3)+5, y+elfSize+13);
+		graphics.drawRect(x,y, gridSize, gridSize);
+		graphics.drawString("HP: "+world.aWorld[y/gridSize][x/gridSize].getHitPoints(), x, y);
 	}
 	@Override
 	public void actionPerformed(ActionEvent e) {
 		world.turnSinceAtk++;
 		for (int i = 0; i<Entity.getElfCounter()+Entity.getOrcCounter()+5; i++) {//the +5 stops the case where when multiple entities die the sortDead() breaks by running this more times than it should it finds all elves/orcs separated by a null
 			
-			if (GameStatus.debugModeOn == false) {
+			if (!GameStatus.debugModeOn) { //switched, still checking if false
 				world.move(i);
 			}
 		}
@@ -134,13 +132,13 @@ public class GamePanel extends JPanel implements ActionListener{
 		}
 		if(GameStatus.debugModeOn) {
 			moveCount++;
-			world.turnSinceAtk = 0;//if this doesnt happen cease fire will be met with each entity only moving one at a time
-			if(world.loc[moveCount]== null) {
+			world.turnSinceAtk = 0;//if this doesn't happen cease fire will be met with each entity only moving one at a time
+			if(world.location[moveCount]== null) {
 				System.out.println("Cannot move null");//gives output for when the "buffer" +3 is being called in the debug
 			}
 		}
 		
-		if (moveCount >= Entity.getOrcCounter()+Entity.getElfCounter()+3) {//the +3 is there for the same reason the +5 is added to the for loop sortDead() sometimes leaves a null between entities and I cant figure out how to fix that so I use this buffer
+		if (moveCount >= Entity.getOrcCounter()+Entity.getElfCounter()+3) {//the +3 is there for the same reason the +5 is added to the for loop sortDead() sometimes leaves a null between entities and I cant figure out how to fix that so, I use this buffer
 			moveCount = 0;
 		}
 		repaint();
@@ -155,12 +153,10 @@ public class GamePanel extends JPanel implements ActionListener{
 		public void keyPressed(KeyEvent e) {
 			switch(e.getKeyCode()) {
 				case KeyEvent.VK_SPACE:
-					if(world.programRunning != false) {
+					if(!world.programRunning) { // switched it, but it's still false
 						timer.start();
-						break;	
-					}else {
-						break;
 					}
+					break; // else was unnecessary
 
 				case KeyEvent.VK_D:
 					if(GameStatus.debugModeOn) {
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GameStatus.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GameStatus.java
index 08e55fe..47159a1 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GameStatus.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GameStatus.java	
@@ -4,30 +4,24 @@ public class GameStatus
 {
     public static boolean debugModeOn = false;
 
-    public static void exampleStatic()
-    {
-	  System.out.println("Hiss! Pop!");
-    }
-    public void orcAttackDebug(int tempRow, int tempCol, int attRow, int attCol, int hitpoints,int hitpointsAfter) {
+    public void orcAttackDebug(int tempRow, int tempCol, int attRow, int attCol, int hitPoints,int hitPointsAfter) {
     	System.out.println("<<attack method called orc>>");
     	System.out.println("Elf Defender r/c: " +tempRow+"/"+tempCol);
     	System.out.println("Orc attackers r/c: "+attRow+"/"+attCol);
-    	System.out.println("Elf defenders hitpoints: "+hitpoints);
-    	System.out.println("Elf defenders hitpoints after attack"+ hitpointsAfter);
+    	System.out.println("Elf defenders hit points: "+hitPoints);
+    	System.out.println("Elf defenders hit points after attack"+ hitPointsAfter);
     }
-    public void elfAttackDebug(int tempRow, int tempCol, int attRow, int attCol, int hitpoints, int hitpointsAfter) {
+    public void elfAttackDebug(int tempRow, int tempCol, int attRow, int attCol, int hitPoints, int hitPointsAfter) {
     	System.out.println("<<attack method called for elf>>");
     	System.out.println("Orc defender r/c: " +tempRow+"/"+tempCol);
     	System.out.println("Elf attackers r/c: "+attRow+"/"+attCol);
-    	System.out.println("Orc defenders hitpoints: "+hitpoints);
-    	System.out.println("Orc defenders hitpoints after attack"+ hitpointsAfter);
+    	System.out.println("Orc defenders hit points: "+hitPoints);
+    	System.out.println("Orc defenders hit points after attack"+ hitPointsAfter);
     }
     public void orcMoveDebug(int oldRow, int oldCol, int currentRow, int currentCol) {
     	System.out.println("<<Orc move called>>");
     	System.out.println("Orc old r/c: "+oldRow+"/"+oldCol);
     	System.out.println("Moved to r/c: "+currentRow+"/"+ currentCol);
-    	
-    	
     }
     public void elfMoveDebug(int oldRow, int oldCol, int currentRow, int currentCol) {
     	System.out.println("<<Elf move called>>");
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java
index 7ab6303..c79f863 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java	
@@ -12,12 +12,10 @@ public class Location
         entityType = type;
     }
 
-    // what are these?
     public int getColumn()
     {
         return(column);
     }
-
     public int getRow()
     {
         return(row);
@@ -38,7 +36,6 @@ public class Location
     {
         column = newColumn;
     }
-
     public void setRow(int newRow)
     {
         row = newRow;
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java
index bdf9a52..3f85540 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
@@ -1,27 +1,16 @@
-import java.util.Scanner;
 //Author Ethan McCorquodale
 
 public class World
 {
-	// lots of variables can this be changed??
+	// //removed unused variables such as all final states and tempChat = ' ' which can just be local
     public static final int SIZE = 10;
-    public static final int ORCS_WIN = 0;
-    public static final int ELVES_WIN = 1;
-    public static final int DRAW = 2;
-    public static final int CEASE_FIRE = 3;
-    public static final int NOT_OVER = 4;
-    private int i = 0; //creates a local index for the location array in the Display method.
-    Location[] loc = new Location[100];//an array that'll track each entities type,location coordinates and if it can move.
-//    int elfCounter = 0;
-//    int orcCounter = 0; // moved to enitity
+    private int locationIndex = 0; //creates a local index for the location array in the Display method. // changed from i since that's not a great name
+    Location[] location = new Location[100];//an array that'll track each entities type,location coordinates and if it can move.
     int tempRow = 0;
     int tempColumn = 0;
     int oldRow;
     int oldCol;
-    int HP;
     int turnSinceAtk;
-    int HPAfter;
-    char tempType = ' ';
     public Entity [][] aWorld;
     public boolean programRunning = true;
     
@@ -40,10 +29,10 @@ public class World
 	}
 
 	public void initializeGrid(){
-		for (int r = 0; r < SIZE; r++){
+		for (int row = 0; row < SIZE; row++){ // changed all instances of r and c so its more readable
 			System.out.println("\n - "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+ "- "); // removed unnecessary print
-			for (int c = 0; c < SIZE; c++){
-				initalizeLocations(r, c);
+			for (int column = 0; column < SIZE; column++){
+				initializeLocations(row, column);
 			}
 			System.out.print("|");
 		}
@@ -51,36 +40,34 @@ public class World
 		sortLocations();
 	}
 
-	public void initalizeLocations(int r, int c){
-		if (aWorld[r][c] == null) {
+	public void initializeLocations(int row, int column){
+		if (aWorld[row][column] == null) {
 			System.out.print("| ");
 			return;
 		}
-		char currentCellAppearance = aWorld[r][c].getAppearance();
+		char currentCellAppearance = aWorld[row][column].getAppearance();
 		System.out.print("|"+currentCellAppearance);
-		loc[i] = new Location(r,c,currentCellAppearance);//Initializes each Entities location/type
-		if (loc[i].getType() == 'O') {//this checks the type and counts +1 if it's an orc
-//			orcCounter++;
+		location[locationIndex] = new Location(row,column,currentCellAppearance);//Initializes each Entities location/type
+		if (location[locationIndex].getType() == 'O') {//this checks the type and counts +1 if it's an orc
 			Entity.incrementOrcCounter(1);
 		}
-		if (loc[i].getType() == 'E') {
-//			elfCounter++;
+		if (location[locationIndex].getType() == 'E') {
 			Entity.incrementElfCounter(1);
 		}
-		i++;//Cause each initialization of the loc[i] to go to the next element
+		locationIndex++;//Cause each initialization of the location[locationIndex] to go to the next element
 	}
 
 	public void sortDead() {//supposed to try and sort null elements and bring them to the end doesn't always work as intended
-		for (int i = 0; i<=Entity.getElfCounter()+Entity.getOrcCounter();i++) {
-			if (loc[i] == null) {
+		for (int locationIndex = 0; locationIndex<=Entity.getElfCounter()+Entity.getOrcCounter();locationIndex++) {
+			if (location[locationIndex] == null) {
 				continue;
 			}
-			if((aWorld[loc[i].getRow()][loc[i].getColumn()] != null)||(loc[i+1] == null)) {
+			if((aWorld[location[locationIndex].getRow()][location[locationIndex].getColumn()] != null)||(location[locationIndex+1] == null)) {
 				continue;
 			}
-			loc[i] = loc[i+1];
-			loc[i+1] = null;
-			if(i-2 >= 0 && loc[i-2]== null) {
+			location[locationIndex] = location[locationIndex+1];
+			location[locationIndex+1] = null;
+			if(locationIndex-2 >= 0 && location[locationIndex-2]== null) {
 				sortDead();
 			}
 		}
@@ -89,62 +76,53 @@ public class World
 	public void sortLocations() {//puts the elfs in the beginning of the array, checks if there is an orc before and elf and if there is it swaps positions in the array
 		int orcCounter = Entity.getOrcCounter();
 		for (int j = 0; j<Entity.getElfCounter()+orcCounter; j++) {
-			if (loc[j+orcCounter] == null){
+			if (location[j+orcCounter] == null){
 				continue;
 			}
-			if(((loc[j].getType() != 'O')||(loc[j+orcCounter].getType() != 'E'))) {
+			if(((location[j].getType() != 'O')||(location[j+orcCounter].getType() != 'E'))) {
 				continue;
 			}
-			tempRow = loc[j+orcCounter].getRow();
-			tempColumn = loc[j+orcCounter].getColumn();
-			tempType = loc[j+orcCounter].getType();
-			loc[j+orcCounter].setType(loc[j].getType());
-			loc[j+orcCounter].setColumn(loc[j].getColumn());
-			loc[j+orcCounter].setRow(loc[j].getRow());
-			loc[j].setRow(tempRow);
-			loc[j].setColumn(tempColumn);
-			loc[j].setType(tempType);
+			tempRow = location[j+orcCounter].getRow();
+			tempColumn = location[j+orcCounter].getColumn();
+			char tempType = location[j+orcCounter].getType();
+			location[j+orcCounter].setType(location[j].getType());
+			location[j+orcCounter].setColumn(location[j].getColumn());
+			location[j+orcCounter].setRow(location[j].getRow());
+			location[j].setRow(tempRow);
+			location[j].setColumn(tempColumn);
+			location[j].setType(tempType);
 		}
 	}
 	public void attack(int index) {// new
 		if(aWorld[tempRow][tempColumn] == null){
 			return;
 		}
-		if((loc[index].getType() == 'O') && (aWorld[tempRow][tempColumn].getAppearance() == 'O')) {
+		if((location[index].getType() == 'O') && (aWorld[tempRow][tempColumn].getAppearance() == 'O')) {
 			return;
 		}
-		if((loc[index].getType() == 'E') && (aWorld[tempRow][tempColumn].getAppearance() == 'E')) {
+		if((location[index].getType() == 'E') && (aWorld[tempRow][tempColumn].getAppearance() == 'E')) {
 			return;
 		}
 		turnSinceAtk = 0;
-		if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+		if((location[index].getType() == 'E')&&(aWorld[location[index].getRow()][location[index].getColumn()] != null)) {
 			Entity attackingEntity = new Elf(); // Assuming Elf is a subclass of Entity
 			attackLogic(attackingEntity, index);
-		} else if((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+		} else if((location[index].getType() == 'O')&&(aWorld[location[index].getRow()][location[index].getColumn()] != null)) {
 			Entity attackingEntity = new Orc();
 			attackLogic(attackingEntity, index);
 		} else {
-			loc[index].setCanMove(true);
+			location[index].setCanMove(true);
 		}
 	}
 
 	public void attackLogic(Entity attackingEntity, int index){
-
 		int entityDmg = attackingEntity.getDamage();
-
-//		if (attackingEntity.equals("elves")) {
-//			entityDmg = Entity.ELF_DAMAGE;  //need to fix
-//		} else if (attackingEntity.equals("orcs")) {
-//			entityDmg = Entity.ORC_DAMAGE;
-//		}
-		HP = aWorld[tempRow][tempColumn].getHitPoints();
+		int HP = aWorld[tempRow][tempColumn].getHitPoints();
 		aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-entityDmg);
-		HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
+		int HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
 
 		if (GameStatus.debugModeOn) {//attack data for elf attackers
-			attackingEntity.debugAttack(status, tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-//		} else if (attackingEntity.equals("orcs")) {
-//			debugAttack(attackingEntity, index);
+			attackingEntity.debugAttack(status, tempRow, tempColumn, location[index].getRow(), location[index].getColumn(),HP,HPAfter);
 		}
 		deathLogic(attackingEntity, index);
 		victoryLogic(attackingEntity);
@@ -153,26 +131,10 @@ public class World
 				attackingEntity.debugLossConditions(status, Entity.getOrcCounter());
 			} else if (attackingEntity instanceof Orc) {
 				attackingEntity.debugLossConditions(status, Entity.getElfCounter());
-			} // maybe move counter to entity?
+			}
 		}
 	}
 
-//	public void debugAttack(Entity attackingEntity, int index){
-//		if (attackingEntity.equals("elves")) {
-//			status.elfAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-//		} else if (attackingEntity.equals("orcs")) {
-//			status.orcAttackDebug(tempRow, tempColumn, loc[index].getRow(), loc[index].getColumn(),HP,HPAfter);
-//		}
-//	}
-
-//	public void debugLossConditions(Entity attackingEntity){
-//		if (attackingEntity instanceof Elf) {
-//			Entity.debugLossConditions(status, Entity.getOrcCounter());
-//		} else if (attackingEntity instanceof Orc) {
-//			Entity.debugLossConditions(status, Entity.getElfCounter());
-//		}
-//	}
-
 	public void deathLogic(Entity attackingEntity, int index){
 		if (aWorld[tempRow][tempColumn].getHitPoints() >0){
 			return;
@@ -180,15 +142,13 @@ public class World
 		aWorld[tempRow][tempColumn] = null;
 
 		if (attackingEntity instanceof Elf) {
-//			orcCounter--;
 			Entity.incrementOrcCounter(-1);
 		} else if (attackingEntity instanceof Orc) {
-//			elfCounter--;
 			Entity.incrementElfCounter(-1);
 		}
 		sortDead();
-		if(loc[index] != null) {
-			loc[index].setCanMove(true);
+		if(location[index] != null) {
+			location[index].setCanMove(true);
 		}
 	}
 
@@ -208,65 +168,65 @@ public class World
 		programRunning = false;
 	}
 
-	public boolean checkPerim(int index) {//looks at all the spaces around the current index of loc[index] looking for things not null
-		if (loc[index] == null){
+	public boolean checkPerimeter(int index) {//looks at all the spaces around the current index of location[index] looking for things not null
+		if (location[index] == null){
 			return false;
 		}
-		for(int r = loc[index].getRow()-1; r<loc[index].getRow()+2;r++) {
-			for(int c = loc[index].getColumn()-1; c<loc[index].getColumn()+2;c++ ) {
-				if((r > 9)||(c > 9)||(r <= - 1)||(c <= -1)){ //ensuring r/c is in aWorld
+		for(int row = location[index].getRow()-1; row<location[index].getRow()+2;row++) {
+			for(int column = location[index].getColumn()-1; column<location[index].getColumn()+2;column++ ) {
+				if((row > 9)||(column > 9)||(row <= - 1)||(column <= -1)){ //ensuring row/column is in aWorld
 					continue;
 				}
-				if((aWorld[r][c] == null) || (loc[index].getType() == aWorld[r][c].getAppearance())) {
+				if((aWorld[row][column] == null) || (location[index].getType() == aWorld[row][column].getAppearance())) {
 					continue;
 				}
-				loc[index].setCanMove(false);
-				tempRow = r;
-				tempColumn = c;
+				location[index].setCanMove(false);
+				tempRow = row;
+				tempColumn = column;
 				attack(index);
 				return true;
 			}
 		}
-		loc[index].setCanMove(true);
+		location[index].setCanMove(true);
 		return false;
 	}
 	// these methods could be broken up into smaller ones
 	public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
-		if (checkPerim(index) == true){ //checks the perim for things not null if it finds something it returns true and the move code below doesn't run
+		if (checkPerimeter(index)){ // changed syntax of if statement still needs to be true
 			return;
 		}
-		if (loc[index] == null) {
+		if (location[index] == null) {
 			return;
 		}
-		if (loc[index].getCanMove()==false){
+		if (!location[index].getCanMove()){ // changed syntax of if statement still needs to be false
 			return;
 		}
 
-		if((loc[index].getRow()-1 != -1)&&(loc[index].getColumn()-1 != -1)) {
+		if((location[index].getRow()-1 != -1)&&(location[index].getColumn()-1 != -1)) {
 			moveLogic('E', index, -1);
 		}
-		if((loc[index].getRow()+1 != 10)&&(loc[index].getColumn()+1 != 10)) {
+		if((location[index].getRow()+1 != 10)&&(location[index].getColumn()+1 != 10)) {
 			moveLogic('O', index, 1);
 		}
-		if ((GameStatus.debugModeOn == true)&&(loc[index] != null)) {
+		if ((GameStatus.debugModeOn)&&(location[index] != null)) { // changed syntax of if statement still needs to be true
 			debugMovement(index);
 		}
 	}
 
 	public void debugMovement(int index){
-		if (loc[index].getType() == 'E') {//elf move data
-			status.elfMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
-		} else if (loc[index].getType() == 'O') {//orc move data
-			status.orcMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+		if (location[index].getType() == 'E') {//elf move data
+			status.elfMoveDebug(oldRow,oldCol,location[index].getRow(),location[index].getRow());
+		} else if (location[index].getType() == 'O') {//orc move data
+			status.orcMoveDebug(oldRow,oldCol,location[index].getRow(),location[index].getRow());
 		}
 	}
 
 	public void moveLogic(char entityType, int index, int increment){
-		if ((loc[index].getType() == entityType)&&(aWorld[loc[index].getRow()+ increment][loc[index].getColumn()+increment]== null)) {
-			oldRow = loc[index].getRow();
-			oldCol = loc[index].getColumn();
-			loc[index].setRow(oldRow+increment);
-			loc[index].setColumn(oldCol+increment);
+		if ((location[index].getType() == entityType)&&(aWorld[location[index].getRow()+ increment][location[index].getColumn()+increment]== null)) {
+			oldRow = location[index].getRow();
+			oldCol = location[index].getColumn();
+			location[index].setRow(oldRow+increment);
+			location[index].setColumn(oldCol+increment);
 			aWorld[oldRow+increment][oldCol+increment] = aWorld[oldRow][oldCol];
 			aWorld[oldRow][oldCol] = null;
 		}
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java
index 33f5d6b..5583574 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java	
@@ -4,9 +4,6 @@ import java.io.InputStream;
 import static org.junit.jupiter.api.Assertions.*;
 import org.junit.jupiter.api.*;
 
-import java.awt.*;
-import javax.swing.*;
-
 class refactor_1_test {
     private static World world;
 
@@ -59,7 +56,7 @@ class refactor_1_test {
         System.setIn(originalSystemInStream);  // Restore the original System.in
         //in data.txt the sorted array should be OOEEOOEE
         StringBuilder afterSort = new StringBuilder();
-        for (Location location : world.loc) {
+        for (Location location : world.location) {
             afterSort.append(location != null ? location.getType() : "");
         }
         assertEquals("OOEEOOEE", afterSort.toString(), "Locations should be sorted like this");
@@ -78,13 +75,13 @@ class refactor_1_test {
         world.tempRow = 0;
         world.tempColumn = 0;
         world.attack(0); //elf will attack
-        int Hp = world.aWorld[world.loc[1].getRow()][world.loc[1].getColumn()].getHitPoints();
+        int Hp = world.aWorld[world.location[1].getRow()][world.location[1].getColumn()].getHitPoints();
         System.out.println("health after attack: " + Hp);
-        assertTrue(world.aWorld[world.loc[1].getRow()][world.loc[1].getColumn()].getHitPoints() < 10, "Orc should lose HP after attack");
+        assertTrue(world.aWorld[world.location[1].getRow()][world.location[1].getColumn()].getHitPoints() < 10, "Orc should lose HP after attack");
     }
 
     @Test
-    void checkPerimTest(){
+    void checkPerimeterTest(){
         String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/perimTest.txt\n";
         InputStream originalSystemInStream = System.in;  // Save the original System.in
         ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
@@ -92,10 +89,10 @@ class refactor_1_test {
         world = new World();  // This will call FileInitialization.read() and use the simulated input
         System.setIn(originalSystemInStream);  // Restore the original System.in
 
-        assertTrue(world.checkPerim(0), "should be true, something next to the elf");
-        assertTrue(world.checkPerim(1), "should be true, something next to the orc");
-        assertFalse(world.checkPerim(2), "should be false, nothing next to the elf");
-        assertFalse(world.checkPerim(3), "should be false, spot is null");
+        assertTrue(world.checkPerimeter(0), "should be true, something next to the elf");
+        assertTrue(world.checkPerimeter(1), "should be true, something next to the orc");
+        assertFalse(world.checkPerimeter(2), "should be false, nothing next to the elf");
+        assertFalse(world.checkPerimeter(3), "should be false, spot is null");
     }
 
     @Test
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java
index 14d3272..3d5218a 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java	
@@ -1,5 +1,5 @@
 //public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
-//    if (checkPerim(index) == true){ //checks the perim for things not null if it finds something it returns true and the move code below doesn't run
+//    if (checkPerimeter(index) == true){ //checks the perim for things not null if it finds something it returns true and the move code below doesn't run
 //        return;
 //    }
 //    if (loc[index] == null) {
diff --git a/out/production/501-gitlab/Elf.class b/out/production/501-gitlab/Elf.class
index 0525cda227418ddd6a15bdece22c951fbeeeb6d0..a86f871f5e71e57a6a183189c5f70b06aa23017a 100644
GIT binary patch
delta 14
Vcmcb^c86_3J#%VK+Qz0^OaLx!1|0wZ

delta 14
Vcmcb^c86_3J#&6h^2VlHOaLy)1}Xpm

diff --git a/out/production/501-gitlab/Entity.class b/out/production/501-gitlab/Entity.class
index aa7db3365dade88deee1070225c68799f3e59c41..42856365d5f59a4b42527ffacc08c880effed152 100644
GIT binary patch
literal 1639
zcmZ`(YflqF6g|^!3)^mam6tpeRHRe{6ci97l2Wxv6%t4jzqzz)S!}nYonrh?e(^y}
z{NNApM;Xt|Hf39DlkM!>IrrRi&)oL+pP#<~WUv=Q2;n{$79xlW44vDT_G-oU%BzQ`
z=T1=yM0Z`!m3so=)KbAjKg>SFEW}~)EbB>EeiDe;7Z;9Qx4ohxATkOzU||qL0_K@3
zk7}+b8$8LWlMxF^brLPvRlDq{(3pjB6^c2P_nBJLlTKZQCoSC2;aa`e3JXNCua8dN
z3M4W$uOV$u7VJvX3A3L$a;7r5+)_cn$ka;IGMINg=S{PE>eNr{(+VRa`C8Gg6zsaI
z_N|~H&s^&3&-)GS2*gXyX|ud9rCt0WFqX={w5!gsv}LoglhYqnC8<&QTBAWRC0DwX
zL>D{J3YaK6azEe^&CCc`jJ~?Ihrt}7jZUbM%4i19`50ud2n*yIDc!b3R3K`yz=3wz
zmym7S>+cT(z9wC-Sa+(9CxfWSrE-^@woijON^20EVEK+c&pYru5AOSSi<Q=R#g1#u
zdeM2|s!NLd_pqYI(U|8Xgm}GC4#N~I2uyPq!VDjdp?>G6aUD^E#WkkJMz5SIu7k{p
zV3yxExvMbG;5wTA0g;}*LSK633W@aW6^6es9>Ohtk23>E5IF#o3<G3JVi<Fbru}@(
z<2H9>(mI5GQ%aQDQLQCx2;9M4fa?P8F)px(R7=S!SCth>e@EYEzWAl1Iyk9Isdfoy
zl@eHDalegVa-utVwrBEvEVq*PSW0`U`@im5{U3l`MW}j?Z{t3y-DwmL^bH8CKnYNO
zc5o%SxfaQl`VZF{y;2T5?Ag?CcT>wfnlkaIojgM-^)bF;ROJeNk-nR2yu|fh$cb*`
z29X=><~C`7Vl~M*_3j%+yZhVXbZ!TPnRu*c&cu^mBom5cqMKxwB+q)1Y_>_(sY5A=
zO!ZLloD;bpAc$bArDD4$!9NNPNRaIyc&Z8dvBMvpf6)uNKD`LD1wPsf-(-JoVkC(Z
Kv`d*GJo^jhAnqmr

literal 1715
zcmZ`(Yi|-!5Iq+b3Uuk)R@?fvO7T(OT3f5QQcHp@(c0)I-O{zL(#60<<A3stkH*9g
z{s4cJ@yuPs1(AfkJ9E#RnKLu+^Vjzu036)QAcpt=EE@?V6-HjW@7#r&8|*G@Y`^xZ
zS|PdY2fkiWi09_F(nujafQ*en*t{zS+SeZxGVa^Ap4)JPs;8hFfeqOh#)v}tm9Hyx
zKhRCyl;md2#<<)hcicU9*Av$P8<XP7c(s>Ky%lJ$A?|}V4jFg7QEj^w#_kta3s1_M
z&kL1GvGAy{?i3ZWPCaO9H_%&dt>wij?x{ke_^`71OpIfs{u8!V5sza2oKq^zZz)(#
zeTQ`qm;Jz7Z|!Y+jZJsEM$cHeUUh3*Zo?P5?X>hOpITDoQ2dg@;EuQ5+AV19R^KQb
z$dw<sd){O1>Q-~9WImE*+@Q+!W|Ot<_}XX1?07d?fZ1J77b5*+;~fQ?-nGB2q_ae5
zvm0vV9K#TJ@1qPhVUbuXXJp$%MZ9SyxNjyBmQd`BBD6OmGZ^=SYQx*}0v$yq-bwSR
zv~wGcky@kZEYo+{yzj#EK5D0ytF`tjW**mDjjFfm%a8`cIb4v{wT^RZVjORZi!%)y
z3Ny4~n5BI<VjrP>6eFGcW5jT!4VG(bPA)0WjI5wJxuHCV8I!<qK2Ol9G0x&Sk^csj
zpV`Mies&+({Na6!exg5ylYCAx0vIB47-_N$VU$0CF`S||AI4)2r)iPN)S=9qR3d67
z<OhSerEms0fag5pxWqV%bL~nNcuG_v{}lrt`4Xm18s{OCO4>m{JC(wDT%bo}M1!-v
z!AJTAFW_Q3c!jB?%B0c%SGD}Nfcg`R7p0RSs-rZCOJ*VpmvN;ZSGJccN3Qw*a9w4G
zqyyLbiW=<|b-s_NG_H4oXGtX=>oX=KR+&MD-Mqvh-sp#%>P227@@7Ze4K_en)8w3f
z@dXpT`WCsjw<3k5u}D=6p!ZLQA|z8nGSy3Rn<OiJNtQY!LS}Yhx=$4aZsffPK?2L|
xDsJ~B_@{y*30AuZRt!N3cOV^<jhi$1DJ@P3{F+{bO%C^FkR-COcL|Q6@Eax}`85Cl

diff --git a/out/production/501-gitlab/FileInitialization.class b/out/production/501-gitlab/FileInitialization.class
index 8b36fc1a1fd30df72327c802163fef496a7e9846..aaa74418769d8759d4821f12de9e6278641c6083 100644
GIT binary patch
delta 1032
zcmZ9KNl#O86vcn9yuQ~0Rj3eJtwhu~q2N3`MR6XWsKKdfkV;Srr66fkoSri{C2BV=
z+;`!|Ar@m36Bim+?)(;h0T-s8wuTrN|M3pz-gEBH@Q={b2~X{kH}5~2mgnr4K`8Ug
z3}sBKvC&K>QvC+O&cXP_cxy7AI^Wuz9!sRoZ#FQ-GV`n^zb`q`7f&ZfQkfUty`eyN
zI^H)FjgKCQpG_*#cP^3aPsN8bT~?&p=81u|JC#nP$KTzv0-nXQsK5t2uc@r5{DR-p
z@qsGG8}{a?b*$pi;Mid+^Ub%xwQ|hqZ2nsK5ixt)vW4$qJIAIhiySN1{(&8i{g$S%
z{gFM8V`-LvW9cW@p~te<c<?jGFk4IKefA4^RLFzO*1kZ$&CFmq^{gO53-f7Z5i50D
zrF}JPUDmLkwQOM>J9Ue)fg^0<Bn~}nrk^$?+ari=jL^<SwsS}C`|_S-7f;#C1woBc
zrJq{aFJUTAE0-BpG4&kf3RkfN-^DeqW2=Y`Zs2051h<Wwa`dRmGu+}fUZn^K!j<C)
zb=>8if+xl2U4dHa=m8T{3UX3w9A81r_-y>PvZ0`$O~h996a?_sVEkwBP8(d~-;lWl
zYNk#9#n>1^DQ;U&*zEVKhMDp<R3-dU(_Wp2@<d~AIXFdkXHlkOIZia^I2Fy~#FkId
z)0HO@TQNniW9A9Q!mg=DU&pf7U1hn=qTJ@R+=Wj9sFEfdC2?8W7QK;9Rnlpe*bQ-v
zCXP$!n0P-a&(qScM_QecS8qw3eQL6ah7$i3@(h$TDeB~UO01(a^TezxCEEY;Zz@e4
z55<3lz;<((M=GYsdH~OFec42lVnaj}>njuSQVGO12WG$0jwT3&qvXg7r9q<z2elUD
zIaeQ>VjxRno`h~gS?Y`|HJMa(!}dl2zyJ$LNa8_33~5Y<*+)uqK2U0`x(rqtyYfU-
R;$7(XS9IDu&U~tF`2!Z)uGjzo

delta 1146
zcmY+D+iz4=6vlshdM-09BW0A>DFttYTPYPUtv%S<0+y1_aA^y45F4hY;MieWNkywI
zM}*2nG{h6s_+osa54?<+ObL@1U-XeTV*DTcAI9&@;6!thz1LaSZ>?|b$1Q&+Z(ob_
zZVQgsEy0qt{^y&&SudIkhG>3vDm$N>Ef^B1_p=wXo%w9xT<7Tgg<Rp>p5T#vz_#+a
z!gMfX_XT(D=i>3v`Rvq8Iy*O(oy-RvPTK}0Ih)H*7qaK44Y5!hoc*wH#$ZnVa?FWG
zx&~;V5%{UOvAOYgVv%8!GM;Tb$9QhiPC5^0lHitD=h@-)tmh={;6}9Dw@YkDwf|9h
z+-9BbU8y`uIwg8m*y2SK{SVmd#qRS$GWL)`D6xHoxEGZsF|3~*MIt=I0*mxj?>ih6
zkU0VQgiShMBF1K#*veCEV;$S&)y_tCO4}i67rT8rd7YQ(WjAl}3j27Kw|R|WX-DYd
z6x~eGLk^Gg>|tJ>3j(t!?@RQv%mCl$|BfQRV?RG~fDcr9PGv__@**E$DPt!eE3QFN
zy#lu&;LF7M6n{||FA3L@&ZtsECHXpIe9vdqp*Ha?msQZHi-6C$f~~~2xvCV7BERAb
zuHkZBWv>&hs6x~w=Bg{CZgcTm5>QcwCk9hD_%(}Nx0wHiY^=~+x71^5A@0A1|5Y(A
zed8_%V}ia`!G>8d{hC2kerHU&OgeL)!>f!QGM?4ociHRhAJ`Xidc4GVM~QbltBjXP
zTB}T?%Cu$LS2;awb=fPGKRu_m6>hi{Zhb2%zm`d4cF1umy|bvIExf5w_dVH$LCp(N
z8hTnoKO|U(d72~g8uNLcV{GBLrgcI*k1KFOp(n-bDTa7g)(L5|OzI1n9Z@GkRqhrw
zssRyjL)1B8cU5vEND9d@DmYmsCnEn79Ob3}H8aMSqSF$DqxiSPpIzl{6AcyVoH}JL
zX^|+dW;E0m4YZp#Y6InKrIvyHt@pxuT2_=AHG>uyEgaf!)TdrSnX{Qy-Yb^L>7FT?
zqNdmSki4E$@K;m3r?m=yNw31!+qkUtzoOM&X0O19Ew8E7sxEW5W60my?7Ak{x@Olu
DcrU`{

diff --git a/out/production/501-gitlab/GamePanel.class b/out/production/501-gitlab/GamePanel.class
index 39a516068da289acbda3700081911d0e30e70d75..637f3524b16db275aeabfab526b1e6ab8d0fb2a5 100644
GIT binary patch
delta 22
dcmdm}woPqAIvXcPPJVJ?NoIcD=4`fOJOEyc2r&Qv

delta 17
Ycmdm{woz?EIvWdfPJZ&{0=8p3066Cc5dZ)H

diff --git a/out/production/501-gitlab/GameStatus.class b/out/production/501-gitlab/GameStatus.class
index 81e4ad5b6588f9e5771169ebc0c5d7378d199585..d0ed66137910af5a8c21712eb155d800781f2f7f 100644
GIT binary patch
literal 2706
zcmb_eZC4vb6n+K*S<<CITIfrl-P)8wtxeVX*2HL=(iRN`OQqWSwj@JY*zCmJ4VAC{
z3jc<BPWAA?AK;Jj_{?lV0tAoeXg=J%clOS6pL_4j-Te92-X8!e_#uM<45pE?F@#}(
z@hx}9E%<KmqOiQaC2O(3aLEh2xGXR@H@`Ll3nOV{Y@C37z<qT$ie-ads>Mx{RRiRy
z!b<1`@oF4Ow^6ikQee7Na^u*oZ95GaZ>qXebA4ad9TnEf<qXC#kw(_WDV!EK)dxi&
z-PD+Vz%X-397C8vyx>J~el5$?rfi(SS%EVRcUx9eP;=v_Uc5;yirpZN1g7Q|7w3;|
z&w{VAtV&KJOzRl^-3F1fa8bZHCZ7!zI?~@Lm$OJ|#33z)k;@{jcV1z3rP6X(a~f(#
zwu_*hE$uggDGT$)Wx?M#?2^$gCp46e+z4)<kj70LZ{jV1%mcR}S7SGBF~<{ix!!uQ
zr0Q~+)e_GHQWY8kV^uGZk6Mj&89s5>eXeAyij7!vLr>f7#Z<iM5yq}|L5l(>*{VCH
zh4(bPzz9pJfAec>4o^Yzv3kjHi*2i-d>$h<-7IUxtc+}W@rq(68R6u<erF?=As1M>
z12Jp{U1Fu$A=4(L4mhm*dIC(v0B35gFqA<Ou49-tHc@*(G-g#r9n2IvO+bsQ71auO
zjJ1D{gGICb#wykP_Pxlgs#aK&_dQ+4v2LYq=)=o9a#yK1ibJ=#WX^kJVU?$9fo;7f
zH)K$kp%WHrw;fRs7Cz_cTjrr)k$6R981=k+Dv;CL>g{cj!>Tz=Q$lXH@TI`)aSo2F
z3){w}?{jj{fjVG4alR%84bzXqx8%^f?Fa{EJbRqOVGcD`NBgpIJ>gl!3EiZ+6RVzO
zp0jby>Y%eHaG4O1<EtpX?qnPqS0l&uJ$<Qk7iDN_vrR{C?>a8{JMyUG*f1Iy1W;)-
z^#J%@Am5#dUa+IKWg(d~$yB-T)?yXz3jEYNi`tG!#~->u-Ir0ms?>I?Sv)#(dR7i>
ze6rh=ecYe-_$O1k*gMGD5EYKqRWFvju=ZjQ$gtwOQ6!@@c(AV=$*CXJG<F0o{Ie@B
zV3HRuaS#n~^l~2PQAEw6&d&<v+q4RN3O<Lf{RZ(fl>ywM)USa-yhCXx4tN*u(Gqwc
zA5iMeztbblXZaVTv!kyt#%FGN50gM*%uJ^CaIRxb4(;LmzA?Oq8Dn&#o@ZQ5ke@SR
zWN?}D^d{qfh*87jVG^y)gmG~jMZ>O)5;dJ@nchY6(ps5X%4i=^8#3C*)O2=t`e$*W
zn}yS%YO=W0v2+%%?HkPEa^Eb*n8i4=nBe;?vp7Xwr~mgX?(*+K(u*INv(7NDdy(&E
zG25YPvbcJPtNsk~yG*WU$n`9_<_yPM3D$n4^SH;l=`)eX0ySOfJnmD|mCoY<wG`h!
z?9XSe%jep^;4?!$7s%%#`CR%>d=~LZyFLr#tXYrhGrEV@4;4cH<pRUmOhzC2sl<7|
z0HgTS6hNSQ9OU)Bkh6rmdJN=}fwb^w|2oc?8uL01{)#vB#SlH$afroU=Gp*O@EM;g
wycRw^9vk_@$TcIsF!Gs^Um5w0k>44)Ze-oa4I?*=+(Jmy3=t!=@Dk_#24VLu*8l(j

literal 2785
zcmb_dZC4vb6n+K**`xv5w4szjyOdy|t&K1Bt;A@X(t?J9rBb!NEt>(hY<A=B23!5+
zukdfE=ctDd{s4cJ$7g0YFF^2kJaP_q@66nJ?sK2HGx_tcgFgUN@qHEp7)&FT!w`lA
zPCv8ut&(ebJEgU)XVQ)YhRcrUL=}O-`Gw643}n*C=5PwRL*W}Q!bmn4<+r%0P}4w;
zUs?|wFWQI#X*CuNj0$9zoiLm+*Zt;97N>D0jeHJgaZccDpFINUrb2K%g3iaNnjRq?
zZ)b5~)4;gERJm+Lk!A0h4H@nFb<?(7SJq8Guq%~3OP$E!0wx8{H>^Eb^*!5)o;cAi
zy)d%8C=?i<Us+i=o*)l_i9A)BRtT3Ai~eDQm^LsYV4gr_+Ye0XZYw$|g*c?lFsAcJ
ztDRR_f4RIC*k;4umkECrY^b;lCJbEHAxrM|(U7bPIi;X-n9kr8yqd;qIlPWrl>33z
zkQ<Q|wOHe+y4-5*ton7iMm@!60;wto0%JADlMh>sEg3wvwp`BSYd$sHv;s$slgU)H
z>kuYa>w+!{jL7F!qv`4_jx8`s)$i!jxTn$yWGJorTiE1rvP+te{BN0lB^gzHmu<%L
z)6>e)Gnri{YWh5TW*qJKceW!LaDq}E%8_HzRVtUHOzV^?;jr)4V_-TOIBU0pKzeby
z_CT-Xh}r|9Fl&C;#!T_#321P(>bE?$xr*-zFgQ$BjI!+}_a?jHw*p(<ca*GSUFB}7
zcIO?s>-$j{1y*xaw{B>FNeW9m=6iBmdUY9?LCL;tijpw!2^)2dO+t~_?J@{^)_9zg
zYFj<o7MdN^xZA+z0&^#<o0gI_L1pNdWT4Wtp?b1>O$G|3AA>D2=-qadL7favSU<{O
zo64wA9$HWGU4b*|fa+%C_e?)yu;O$$m|ZnXh|qNXFuGx8O%ASxrsX>7f~gafffj~$
zVV2vwflKbbJRUeUjAj<!AV?!rj{zH?*nKY@Z{OdOrTATnUzq!r9r?ivfggKct|Tx%
z?PbfWyD}`+e1EUiTs;2%^voRE`1nOr_6dL56Cc0ei@lFp0#W7bxZy;Smp8ZKc`~TF
zRv5}K4c^PSV>R`ong;8-^v|KZd~scv;iELbXP9q+dY0&A=<_Fs_6?3o{0e@DuKfn_
z6P*FPNvoEDLA*tqiv#dB-r*>N+nvpG8k%!IBb^`l6=MoOXaM!|rh*M*IkSi|t;+X1
zLDT$J)RqFb@OyFU0Ox^tFkMI;;9`4J7&^dIXE1z#%X-iyI!Q8$qJa?<Fp61>vEtKs
z7iTp2<v3eHo_V=a(FIlT9zDgfg7^79sJ%P%Qrf#qZ%BJpdP<Oc{i`s$Ra|LP)m6;4
zN2-cqXTU1v`c`q4Rh(lL1y(W6D$bMZ#Q$E!67DBw@dImC6&BT5ywt5?zD-qEv2cW|
z`V|Ex$@L<cPLb<n&GA-@)ls^L2h>fqQ4!1Zl+s14&{Ikm@d3RQ*FWsf=USJ~jeo&s
zhJ3DQ<z}g_YTN(Hr-s!;pCxiutVdLj9^mC8Lc}e8mCZM=6OPBh9RWu0PzxZib`s>x
zzL3`ldHn>)bq#6Yqs}Fq)*AB$5B`Eu_X5T@c!**@VhID-z+-;bc};w7_*mN~+J36-
kQ*FP{_A6~IZEbC(wmaH7+U{xFK#QpAitpn&zQcvT0nQsd{{R30

diff --git a/out/production/501-gitlab/World.class b/out/production/501-gitlab/World.class
index c6a8de9779748e7c94c66e3f1d77e7ac167908f7..49b7ee563398e1b95c95256c42ee8e3f7b6fc0e5 100644
GIT binary patch
literal 6086
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

literal 6271
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

diff --git a/out/production/501-gitlab/refactor_1_test.class b/out/production/501-gitlab/refactor_1_test.class
index 4bba1bf5463ecf4ceb3177ba4521b7de6e647438..729327417910f95ce79c3d0e9f9ab5e8066d5785 100644
GIT binary patch
delta 671
zcmZvY$xo9}6vfYLE3f@J7ZVEAS_P?7k*XCe(vm2p1_xMxN>qkYr2=grC~kD4iGRSA
z4S#@fYuK1Z-MBDuV<OJ;JkN<PttW(-7+rktz3<)gJNKS<AzTa_*M1c*1K5J^=Z&9c
zn{}j+>7U3I@-r4ogW2uM3}rLJ9og~RXm%nyK9kb5W|=fv)g8HHMBKi=%kslWt7nq1
z2RttnY%0`05f9bJ>#cYtIeWG1je)m#r}5r_DSVJ=`>gsbdB-ZtSB0RAIf7Djv?(nn
zXN%1N3!JdRCGF00(JGj+2pWq~jvy+q1WOUZax6mx)o4TwQvB;iE%qafL9CD(*MO>%
z)2?FkI<gzc#>j3Y+d#IF>Nx7qgzeZ&eG?8Nful&`3LhhZGT!^qiyLyny|!-_H#yBM
zR*u0^V%e&(S|gxwTf?u>qj6U$pv1Xs|0`(>Kv7o$pXFbHI6YOB^Hywfm0uZ^*SQ1t
zq{VYFx|JbX86w3HZ48lSh;0nfjx`*0J$5k8PKMvbARU-Sr$oH5z<r#YAKVX931_h2
zPjfl$txykS$~(ETi{9Pz-c9d4^xjMF9(wOXl#b0fz)rpBLZ8HZN%c^U_|8TK$z;hK
zBy)(&5SbjAVQj((Ix$M8JWmCj!kDDXlhH@aV!~rQ;l7acYbJa;w?3a+U*aPx25&#%
I3%;T9H{4%|{{R30

delta 654
zcmZXQOH30{6o&uHj7&RI`T&y_8?{Po1+35*QmmmxOe`V_K7%OHQi+rzMQp^KCc1Hb
zG$zKiackI^O5Ct8abqHaZ}I&WUy1Ile+ZF<nasVJd(QXIcWxncJ!IbgQ@9CW6MkMZ
ze`&flm`jh@^{8f<>HfZSwzF>}b9Ai32x@j4OR0P&Hzdc+q<SDX%&_HLXp-M%t9mKT
zmf!ta!L9<Sd@N8OtGD5;WUVUadlMh<(ZDAMF5t6VwkFkA8Ftj@-xZdLa(HFNGGyG5
zRHo=<&2|@bxM71wwv}CtEQN;UFc3fmR=|suT&u8(PZ&WoB81IYjlHNw4{C52wGwpp
zs)(F(7MdE!M#(mkT~9Vfb_2;KtVJB{NU%SS0c^wxv|xg_5l1P{eYlHBIqj-T+`|-Y
zrdc@&y~wi7K&=74f%^u02D%MAR0=54(f)r)W?f!$p;KJ$C6)7^jJ(CS6bg5^1COM|
zJswF?xs}RWsN6>7tyFHO@^-922iBpJL+s$FJE^@3m#|yvJPrQGI5V&5LrD?mvFM+R
zobq_p6S?Rat?pv>K4y0_dq1-eFuRA@2NA&`UP_98?ZqCXC0d?PPi3_HO85wweli&{
z17xyf2FVQZLUS}3Mi-9pWCUlCm$r&T<QZov!3>^rUrhQPCwwutzM5O#;0r4zPiOHB
HKT!D>#N>(7

-- 
GitLab


From 1dc732eab1b8aa6b3c35d2950b89096ac7024f42 Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Mon, 17 Feb 2025 15:18:15 -0700
Subject: [PATCH 10/17] fixed a small error i didn't realize where
 if(world.programRunning) in game panel use to be

if(!world.programRunning)
so it wouldnt actually do rounds, the tests passed but that actual gui part didn't so fixed that
---
 .../src/FileInitialization.java               |  18 +-
 .../src/GamePanel.java                        |  40 ++--
 .../src/World.java                            |   2 +-
 .../src/scrap2.txt                            | 114 ++++++++++++
 .../src/scrap3.txt                            | 173 ++++++++++++++++++
 out/production/501-gitlab/FileContainer.class | Bin 696 -> 714 bytes
 .../501-gitlab/FileInitialization.class       | Bin 3157 -> 3182 bytes
 .../501-gitlab/GamePanel$MyKeyAdapter.class   | Bin 1197 -> 1193 bytes
 out/production/501-gitlab/GamePanel.class     | Bin 4918 -> 4757 bytes
 out/production/501-gitlab/GameStatus.class    | Bin 2706 -> 2706 bytes
 out/production/501-gitlab/Location.class      | Bin 1160 -> 1160 bytes
 out/production/501-gitlab/World.class         | Bin 6086 -> 5864 bytes
 12 files changed, 317 insertions(+), 30 deletions(-)
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap2.txt
 create mode 100644 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap3.txt

diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java
index 45d672f..538d46d 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java	
@@ -6,7 +6,7 @@ import java.util.Scanner;
 
 /*
   Usage:
-  * Call the static read method to prompt the user for the file containing the 
+  * Call the static read method to prompt the user for the file containing the
     positions.
   * The method will prompt for a filename and try to open that the file in the
     location where the Driver for your Java program is located.
@@ -14,9 +14,9 @@ import java.util.Scanner;
     the file is not at the specified location, it is corrupted etc.).
   * The method returns a reference to a 2D array of references to objects of type
     Entity.
-  * The appearance attribute of the entity will correspond to the appearance of 
+  * The appearance attribute of the entity will correspond to the appearance of
     characters in the file.
-  * Starting files must be exactly 10x10 characters in size and consist only of the 
+  * Starting files must be exactly 10x10 characters in size and consist only of the
     'O' character, an 'E' character or a space.
 
   Version Feb 16B, 2021
@@ -37,17 +37,17 @@ public class FileInitialization
         int row, column; // changed from r and c so its more readable
         char letter;
 //        BufferedReader bufferReader = null;
-//        FileReader fileReader = null; 
+//        FileReader fileReader = null;
         FileContainer aContainer; // changed to this as it's going to be null regardless
         try {
             aContainer = checkingFile();
             BufferedReader bufferReader = aContainer.getBufferedReader(); //changed name from br
-            FileReader fileReader = aContainer.getFileReader(); // changed name from br so its more readable 
+            FileReader fileReader = aContainer.getFileReader(); // changed name from br so its more readable
             line = bufferReader.readLine();
             if (line == null)
                 System.out.println("Empty file, nothing to read");
             row = 0;
-            while (line != null) {   
+            while (line != null) {
                 column = 0;
                 while(column < World.SIZE) {
                     letter = line.charAt(column);
@@ -65,12 +65,12 @@ public class FileInitialization
             System.out.println("Input file not in " + location);
         }
         catch (IOException e) {
-            System.out.println("General file input problem " + 
-                               "reading starting positions");
+            System.out.println("General file input problem " +
+                    "reading starting positions");
         }
         return(temp);
     }
-    
+
     private static FileContainer checkingFile()
     {
         FileContainer aContainer; // changed to this as it's going to be null regardless
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java
index 73314a0..9bf3831 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
@@ -15,7 +15,7 @@ import javax.swing.Timer;
  	Version 3/4/2021: I got the graphical portion setup and functional still need to attach it logically
  					  to the World class and have sprites to represent elves/dwarves
  	Version 3/5/2021: I got the sprites setup correctly, I'm having issues with having them behave correctly though the attack() method
- 					  in the World class needs some tweaking I'm pretty sure as it's a logical error that's occurring (orc isn't attacking 
+ 					  in the World class needs some tweaking I'm pretty sure as it's a logical error that's occurring (orc isn't attacking
  					  elf after it's told to stop moving when the space it's moving to is occupied)
  	Version 3/9/2021: Finally fixed that weird bug that would cause issues when one entity dies, I did so by adding a sortDead method
  					  at this point the program runs without any bugs and meets the design specifications I just need to add Debug mode now
@@ -30,7 +30,7 @@ public class GamePanel extends JPanel implements ActionListener{
 	int moveCount = 0;
 	World world = new World();
 	Timer timer;
-	GamePanel()	
+	GamePanel()
 	{
 		this.setPreferredSize(new Dimension(Width,Height));
 		this.setBackground(Color.blue);
@@ -38,25 +38,25 @@ public class GamePanel extends JPanel implements ActionListener{
 		this.addKeyListener(new MyKeyAdapter());
 		startGame();
 	}
-	
+
 	public void startGame()	{
 		timer = new Timer(Delay,this);
 	}
-	
+
 	public void paintComponent(Graphics graphics) { // changed g to graphics since I don't like single letter variables
 		super.paintComponent(graphics);
 		drawWorld(graphics);
 	}
-	
+
 	public void drawWorld(Graphics graphics) {
 		for (int row = 0; row<World.SIZE;row++) { //fixed static warning
 			for (int column = 0; column<World.SIZE; column++) {
 				if(world.aWorld[row][column] == null) {
-				graphics.setColor(Color.white);
-				graphics.fillRect(column*gridSize, row*gridSize, gridSize, gridSize); // removed unnecessary 0+
-				graphics.setColor(Color.black);
-				graphics.drawRect(column*gridSize, row*gridSize, gridSize, gridSize); // removed unnecessary 0+
-				} 
+					graphics.setColor(Color.white);
+					graphics.fillRect(column*gridSize, row*gridSize, gridSize, gridSize); // removed unnecessary 0+
+					graphics.setColor(Color.black);
+					graphics.drawRect(column*gridSize, row*gridSize, gridSize, gridSize); // removed unnecessary 0+
+				}
 				else if(world.aWorld[row][column].getAppearance() == 'E') {
 					drawElf(graphics, column*gridSize, row*gridSize);
 				} else if (world.aWorld[row][column].getAppearance() == 'O') {
@@ -64,9 +64,9 @@ public class GamePanel extends JPanel implements ActionListener{
 				}
 			}
 		}
-	}	
+	}
 	public void drawOrc(Graphics graphics, int x, int y) {
-		
+
 		int[] xCoord = {x+6,x+19,x+elfSize/2+5};
 		int[] yCoord = {y+10,y+10,y};
 		Color orcGreen = new Color(21,158,26);
@@ -84,31 +84,31 @@ public class GamePanel extends JPanel implements ActionListener{
 		graphics.drawPolygon(xCoord, yCoord, 3);//draws outline for hat
 		graphics.fillOval(x+7,y+9,5,7);//draws left eye
 		graphics.fillOval(x+13,y+9,5,7);//draws right eye
-		
+
 		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+10, (x+5)+(elfSize/3), y+elfSize+13);//left foot line 1
 		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+13, x+6, y+elfSize+13);//left foot line 2
 		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+10, (x+5)+elfSize-(elfSize/3), y+elfSize+13);
 		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+13, (x+5)+elfSize-(elfSize/3)+5, y+elfSize+13);
 		graphics.drawRect(x,y, gridSize, gridSize);
 		graphics.drawString("HP: "+world.aWorld[y/gridSize][x/gridSize].getHitPoints(), x, y);
-	
+
 	}
 	public void drawElf(Graphics graphics, int x, int y) {
-		
+
 		int[] xCoord = {x+5,x+20,x+elfSize/2+5};
 		int[] yCoord = {y+7,y+7,y};
 		graphics.setColor(Color.white);
 		graphics.fillRect(x,y, gridSize, gridSize);
 		graphics.setColor(Color.green);
 		graphics.fillRect(x+5, y+7, elfSize, elfSize);
-	
+
 		graphics.fillPolygon(xCoord, yCoord, 3);
 		graphics.setColor(Color.black);
 		graphics.drawPolygon(xCoord, yCoord, 3);
 		graphics.drawRect(x+5, y+7, elfSize, elfSize);
 		graphics.fillOval(x+7,y+9,5,7);
 		graphics.fillOval(x+13,y+9,5,7);
-		
+
 		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+7, (x+5)+(elfSize/3), y+elfSize+13);
 		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+13, x+6, y+elfSize+13);
 		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+7, (x+5)+elfSize-(elfSize/3), y+elfSize+13);
@@ -120,7 +120,7 @@ public class GamePanel extends JPanel implements ActionListener{
 	public void actionPerformed(ActionEvent e) {
 		world.turnSinceAtk++;
 		for (int i = 0; i<Entity.getElfCounter()+Entity.getOrcCounter()+5; i++) {//the +5 stops the case where when multiple entities die the sortDead() breaks by running this more times than it should it finds all elves/orcs separated by a null
-			
+
 			if (!GameStatus.debugModeOn) { //switched, still checking if false
 				world.move(i);
 			}
@@ -137,7 +137,7 @@ public class GamePanel extends JPanel implements ActionListener{
 				System.out.println("Cannot move null");//gives output for when the "buffer" +3 is being called in the debug
 			}
 		}
-		
+
 		if (moveCount >= Entity.getOrcCounter()+Entity.getElfCounter()+3) {//the +3 is there for the same reason the +5 is added to the for loop sortDead() sometimes leaves a null between entities and I cant figure out how to fix that so, I use this buffer
 			moveCount = 0;
 		}
@@ -153,7 +153,7 @@ public class GamePanel extends JPanel implements ActionListener{
 		public void keyPressed(KeyEvent e) {
 			switch(e.getKeyCode()) {
 				case KeyEvent.VK_SPACE:
-					if(!world.programRunning) { // switched it, but it's still false
+					if(world.programRunning) { // switched it, but it's still true // fixed accidentally set to false
 						timer.start();
 					}
 					break; // else was unnecessary
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java
index 3f85540..962649c 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
@@ -163,7 +163,7 @@ public class World
 				return;
 			}
 		}
-		System.out.println(attackingEntity.getClass().getSimpleName() + " wins, no more opponents left.");
+//		System.out.println(attackingEntity.getClass().getSimpleName() + " wins, no more opponents left.");
 //		System.out.println(attackingEntity + "win no more orcs left.");
 		programRunning = false;
 	}
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap2.txt b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap2.txt
new file mode 100644
index 0000000..8c98b2b
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap2.txt	
@@ -0,0 +1,114 @@
+import java.io.FileReader;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.util.Scanner;
+
+/*
+  Usage:
+  * Call the static read method to prompt the user for the file containing the
+    positions.
+  * The method will prompt for a filename and try to open that the file in the
+    location where the Driver for your Java program is located.
+  * The prompt will be repeated if there are problems accessing the file (e.g.
+    the file is not at the specified location, it is corrupted etc.).
+  * The method returns a reference to a 2D array of references to objects of type
+    Entity.
+  * The appearance attribute of the entity will correspond to the appearance of
+    characters in the file.
+  * Starting files must be exactly 10x10 characters in size and consist only of the
+    'O' character, an 'E' character or a space.
+
+  Version Feb 16B, 2021
+  * Program repeats prompt for filename if file not found at location.
+
+  Version Feb 16A, 2021
+  * Program allows the user to specify the input file at runtime.
+
+  Version: Feb 11A:
+  * Changed references of dwarves to elves. Constants related to the
+  * Entity attributes deleted.
+*/
+public class FileInitialization
+{
+    public static Entity[][] read() {
+        Entity [][] temp = new Entity[World.SIZE][World.SIZE];
+        String line; // changed to this as it's going to be null regardless
+        int row, column; // changed from r and c so its more readable
+        char letter;
+//        BufferedReader bufferReader = null;
+//        FileReader fileReader = null;
+        FileContainer aContainer; // changed to this as it's going to be null regardless
+        try {
+            aContainer = checkingFile();
+            BufferedReader bufferReader = aContainer.getBufferedReader(); //changed name from br
+            FileReader fileReader = aContainer.getFileReader(); // changed name from br so its more readable
+            line = bufferReader.readLine();
+            if (line == null)
+                System.out.println("Empty file, nothing to read");
+            row = 0;
+            while (line != null) {
+                column = 0;
+                while(column < World.SIZE) {
+                    letter = line.charAt(column);
+                    temp[row][column] = createEntity(letter);
+                    column = column + 1;
+                }
+                line = bufferReader.readLine();
+                if (line != null)
+                    row = row + 1;
+            }
+            fileReader.close();
+        }
+        catch (FileNotFoundException e) {
+            String location = System.getProperty("user.dir");
+            System.out.println("Input file not in " + location);
+        }
+        catch (IOException e) {
+            System.out.println("General file input problem " +
+                               "reading starting positions");
+        }
+        return(temp);
+    }
+
+    private static FileContainer checkingFile()
+    {
+        FileContainer aContainer; // changed to this as it's going to be null regardless
+        Scanner in = new Scanner(System.in);
+        String filename; // changed to this as it's going to be null regardless
+//        boolean fileFound = false;
+        while (true) // changed to this as it's still if false
+        {
+            try
+            {
+                System.out.print("Name of file containing starting positions: ");
+                filename = in.nextLine();
+                FileReader fileReader = new FileReader(filename);
+                BufferedReader bufferReader = new BufferedReader(fileReader);
+//                fileFound = true;
+                aContainer = new FileContainer(bufferReader, fileReader);
+                return aContainer;
+            }
+            catch (FileNotFoundException ex)
+            {
+                String location = System.getProperty("user.dir");
+                System.out.println("Input file not in " + location);
+            }
+
+        }
+//        aContainer = new FileContainer();
+//        return(aContainer);
+    }
+
+    private static Entity createEntity(char letter) {
+        return switch (letter) {
+            case 'O' -> new Orc();
+            case 'E' -> new Elf();
+            case Entity.EMPTY -> null;
+            default -> {
+                System.out.println("Error: Invalid character [" + letter + "] in file");
+                yield null;  // 'yield' is used to return a value from the block
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap3.txt b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap3.txt
new file mode 100644
index 0000000..a3a6f91
--- /dev/null
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap3.txt	
@@ -0,0 +1,173 @@
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import javax.swing.JPanel;
+import javax.swing.Timer;
+// removed unused import
+
+//Author Ethan McCorquodale
+
+/*
+ 	Version 3/4/2021: I got the graphical portion setup and functional still need to attach it logically
+ 					  to the World class and have sprites to represent elves/dwarves
+ 	Version 3/5/2021: I got the sprites setup correctly, I'm having issues with having them behave correctly though the attack() method
+ 					  in the World class needs some tweaking I'm pretty sure as it's a logical error that's occurring (orc isn't attacking
+ 					  elf after it's told to stop moving when the space it's moving to is occupied)
+ 	Version 3/9/2021: Finally fixed that weird bug that would cause issues when one entity dies, I did so by adding a sortDead method
+ 					  at this point the program runs without any bugs and meets the design specifications I just need to add Debug mode now
+ */
+public class GamePanel extends JPanel implements ActionListener{
+	// removed unused variables like system.in
+	static final int Height = 300;
+	static final int Width = 300;
+	static final int gridSize = 30;
+	static final int elfSize = 15;
+	final int Delay = 1;
+	int moveCount = 0;
+	World world = new World();
+	Timer timer;
+	GamePanel()
+	{
+		this.setPreferredSize(new Dimension(Width,Height));
+		this.setBackground(Color.blue);
+		this.setFocusable(true);
+		this.addKeyListener(new MyKeyAdapter());
+		startGame();
+	}
+
+	public void startGame()	{
+		timer = new Timer(Delay,this);
+	}
+
+	public void paintComponent(Graphics graphics) { // changed g to graphics since I don't like single letter variables
+		super.paintComponent(graphics);
+		drawWorld(graphics);
+	}
+
+	public void drawWorld(Graphics graphics) {
+		for (int row = 0; row<World.SIZE;row++) { //fixed static warning
+			for (int column = 0; column<World.SIZE; column++) {
+				if(world.aWorld[row][column] == null) {
+				graphics.setColor(Color.white);
+				graphics.fillRect(column*gridSize, row*gridSize, gridSize, gridSize); // removed unnecessary 0+
+				graphics.setColor(Color.black);
+				graphics.drawRect(column*gridSize, row*gridSize, gridSize, gridSize); // removed unnecessary 0+
+				}
+				else if(world.aWorld[row][column].getAppearance() == 'E') {
+					drawElf(graphics, column*gridSize, row*gridSize);
+				} else if (world.aWorld[row][column].getAppearance() == 'O') {
+					drawOrc(graphics,column*gridSize,row*gridSize);
+				}
+			}
+		}
+	}
+	public void drawOrc(Graphics graphics, int x, int y) {
+
+		int[] xCoord = {x+6,x+19,x+elfSize/2+5};
+		int[] yCoord = {y+10,y+10,y};
+		Color orcGreen = new Color(21,158,26);
+		graphics.setColor(Color.white);
+		graphics.fillRect(x,y, gridSize, gridSize);//sets the background of that grid square white
+		graphics.setColor(orcGreen);
+		graphics.fillOval(x+5, y+7, elfSize, elfSize+3);
+
+		graphics.setColor(Color.black);
+		graphics.drawOval(x+5, y+7, elfSize, elfSize+3);
+		graphics.setColor(orcGreen);
+		graphics.fillOval(x+13,y+9,5,7);//draws right eye
+		graphics.fillPolygon(xCoord, yCoord, 3);//fills in hat
+		graphics.setColor(Color.black);
+		graphics.drawPolygon(xCoord, yCoord, 3);//draws outline for hat
+		graphics.fillOval(x+7,y+9,5,7);//draws left eye
+		graphics.fillOval(x+13,y+9,5,7);//draws right eye
+
+		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+10, (x+5)+(elfSize/3), y+elfSize+13);//left foot line 1
+		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+13, x+6, y+elfSize+13);//left foot line 2
+		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+10, (x+5)+elfSize-(elfSize/3), y+elfSize+13);
+		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+13, (x+5)+elfSize-(elfSize/3)+5, y+elfSize+13);
+		graphics.drawRect(x,y, gridSize, gridSize);
+		graphics.drawString("HP: "+world.aWorld[y/gridSize][x/gridSize].getHitPoints(), x, y);
+
+	}
+	public void drawElf(Graphics graphics, int x, int y) {
+
+		int[] xCoord = {x+5,x+20,x+elfSize/2+5};
+		int[] yCoord = {y+7,y+7,y};
+		graphics.setColor(Color.white);
+		graphics.fillRect(x,y, gridSize, gridSize);
+		graphics.setColor(Color.green);
+		graphics.fillRect(x+5, y+7, elfSize, elfSize);
+
+		graphics.fillPolygon(xCoord, yCoord, 3);
+		graphics.setColor(Color.black);
+		graphics.drawPolygon(xCoord, yCoord, 3);
+		graphics.drawRect(x+5, y+7, elfSize, elfSize);
+		graphics.fillOval(x+7,y+9,5,7);
+		graphics.fillOval(x+13,y+9,5,7);
+
+		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+7, (x+5)+(elfSize/3), y+elfSize+13);
+		graphics.drawLine((x+5)+(elfSize/3), y+elfSize+13, x+6, y+elfSize+13);
+		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+7, (x+5)+elfSize-(elfSize/3), y+elfSize+13);
+		graphics.drawLine((x+5)+elfSize-(elfSize/3), y+elfSize+13, (x+5)+elfSize-(elfSize/3)+5, y+elfSize+13);
+		graphics.drawRect(x,y, gridSize, gridSize);
+		graphics.drawString("HP: "+world.aWorld[y/gridSize][x/gridSize].getHitPoints(), x, y);
+	}
+	@Override
+	public void actionPerformed(ActionEvent e) {
+		world.turnSinceAtk++;
+		for (int i = 0; i<Entity.getElfCounter()+Entity.getOrcCounter()+5; i++) {//the +5 stops the case where when multiple entities die the sortDead() breaks by running this more times than it should it finds all elves/orcs separated by a null
+
+			if (!GameStatus.debugModeOn) { //switched, still checking if false
+				world.move(i);
+			}
+		}
+		if (GameStatus.debugModeOn) {
+			world.move(moveCount);
+			repaint();
+			timer.stop();
+		}
+		if(GameStatus.debugModeOn) {
+			moveCount++;
+			world.turnSinceAtk = 0;//if this doesn't happen cease fire will be met with each entity only moving one at a time
+			if(world.location[moveCount]== null) {
+				System.out.println("Cannot move null");//gives output for when the "buffer" +3 is being called in the debug
+			}
+		}
+
+		if (moveCount >= Entity.getOrcCounter()+Entity.getElfCounter()+3) {//the +3 is there for the same reason the +5 is added to the for loop sortDead() sometimes leaves a null between entities and I cant figure out how to fix that so, I use this buffer
+			moveCount = 0;
+		}
+		repaint();
+		timer.stop();
+		if (world.turnSinceAtk >= 10 ) {
+			world.programRunning = false;
+			System.out.println("Cease Fire, Game over.");
+		}
+	}
+	// de-nest
+	public class MyKeyAdapter extends KeyAdapter{
+		public void keyPressed(KeyEvent e) {
+			switch(e.getKeyCode()) {
+				case KeyEvent.VK_SPACE:
+					if(!world.programRunning) { // switched it, but it's still false
+						timer.start();
+					}
+					break; // else was unnecessary
+
+				case KeyEvent.VK_D:
+					if(GameStatus.debugModeOn) {
+						System.out.println("Debug mode left");
+						GameStatus.debugModeOn = false;
+						break;
+					}
+					System.out.println("Debug mode entered");
+					GameStatus.debugModeOn = true;
+					break;
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/out/production/501-gitlab/FileContainer.class b/out/production/501-gitlab/FileContainer.class
index 2ecbbcf4ff40baf66ca4ce50e0e643693e3c1f2d..f096f1d884e892b9940c712a078c0cb2ea8bbb60 100644
GIT binary patch
delta 67
zcmdnNdWv;IgaA)cX<AxpQBZ1PN@@`!gT%xI5@MVT91MIs4EziNj0{|9nK`Lo*^Mn0
UjGRIY+zdPn3=Be(k1~D+0Ap4VssI20

delta 41
xcmX@bx`TB>1RGOQ5hH`d<OD{Ei48nVOlcdZSuk=kF>o{RFfcGMO}@_f835h>3I6~9

diff --git a/out/production/501-gitlab/FileInitialization.class b/out/production/501-gitlab/FileInitialization.class
index aaa74418769d8759d4821f12de9e6278641c6083..c6fd566047463a563e880b13bbfa3db622aecb24 100644
GIT binary patch
delta 62
zcmcaA@lIlc6RRX!a(+%}ZXP28qbDN+Pf}@GT53^HYGO+2WFJ;JF0Qo9oKy%mht-UQ
NxhTJU^AgsLYye<p6OI4?

delta 37
tcmaDSaaCf26Dt>EG9v?{CnEz>(&T7XIVPsG$<3^0OpHaF_p)we0|2uP33dPg

diff --git a/out/production/501-gitlab/GamePanel$MyKeyAdapter.class b/out/production/501-gitlab/GamePanel$MyKeyAdapter.class
index 1385e25362c535dd0485d8e609a6625088f3a994..bb20d92574b91717d122dcad35daa9f1c30c10a3 100644
GIT binary patch
delta 67
zcmV-J0KEUL38@LNkplsklad280l<^T18plR015yA0Ga?G0Gt3V0G$9j0HOdu0HXj%
Z0Hgp+0Hpv=0H**~0H^?40IQQ@1WI)X5r+T(

delta 71
zcmV-N0J#6D39SjRkplsmlad280mPHX18pxZ01E&B0Gt3I0G<FX0G|Li0H6Rm0Hy#y
d0H***0H^>=0I2{^0IL930IUF80I!o@1WLWi5{m!;

diff --git a/out/production/501-gitlab/GamePanel.class b/out/production/501-gitlab/GamePanel.class
index 637f3524b16db275aeabfab526b1e6ab8d0fb2a5..65bf4166eb8b0acaca67ba68cc5af466dc60156c 100644
GIT binary patch
literal 4757
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
CDOeZ)

literal 4918
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

diff --git a/out/production/501-gitlab/GameStatus.class b/out/production/501-gitlab/GameStatus.class
index d0ed66137910af5a8c21712eb155d800781f2f7f..6c8bb193a70f1fe646252dce86ab10c622fdceaf 100644
GIT binary patch
delta 51
zcmbOvI!Sax8waE0<aUl`UTFpn1{nrX23ZDW2KmY2oH?wD3_J`<lRG&5SXF>5)ycOx
Gw*vqZg9>>7

delta 51
zcmbOvI!Sax8waEG<aUl`UReeX1~~>%26+Z$2F1zZoH?w@3_J`flRG&5Sk-_m^~tw6
Gw*vqbF$#+S

diff --git a/out/production/501-gitlab/Location.class b/out/production/501-gitlab/Location.class
index 802582b623ee6e0f7bbbf0e97423d36954b100e3..dcd0b492f37745e08e7c54f768482e9b63f87229 100644
GIT binary patch
delta 95
zcmeC+?BLwc!o(;z`9G8B<XKGWjG|!Hbs$Ru$g*XXW?*HIne52y&MF6F$pcy9lb0~-
fGb)1By=2y4RRxNxfyH%M3|KXRJS{M<l7$}twX_zt

delta 95
zcmeC+?BLwc!o(;v`9G8B<XKGWjN)L{bs$R$$g*XXWng8Ho9xK!&Z+=pDFRvIlb0~-
fGb)4Cy=2y4RR@Y|fW>uL3|Mu5JY6ual7$}txyu&M

diff --git a/out/production/501-gitlab/World.class b/out/production/501-gitlab/World.class
index 49b7ee563398e1b95c95256c42ee8e3f7b6fc0e5..e7a12584407ec9f5fb7373cf22ac4767d97e2521 100644
GIT binary patch
delta 1512
zcmZ`(YiJx*6#iyscd|Q~&E~O>w7Y>M5|gah*j*(*1S6zUO0-IA`lBFZH(jH2vkPTo
z5rQJAf}%*hDN;}rM6DQG6O*l0Q){)c);`oktM!!_AN6g0K(+Pp-FZcS$S`-#J@=gN
zeCKgzrsMR*`jNl(?FZ0}U&r<BzPKM_2A)AiftD$iGX0x%__4>pvltf}wZ!eu8JNVB
z0(~G?>dq9dDc+J(ptiMdly-X!JdYO?1O}<Tx;SuiKVjOs*Q{yZAdg=(@RCFhZpvkc
z2Bhm?u22f_WWRxzVbHjk-?Xl{RjOVwaL`e87xOwA@R|Yj5N5<#twB3%;0=oLihNM(
zFXo2^3#757xK-R&aWeLm0?)7#((tv8Z}4pezB8}^--}26v)-Q+w1}hr7PSIDi$?;T
z!6PuB;7!)RgQH?Ga6y1nxC0J~klvvj6J2_*a$M}t)A1A3N^4*h-oo4bDp(1P>oKvY
zUq`D;D?3`HRU=f?@_C2$9zK^~*7oeOJ?F$dl?_DSRe2}<Rv4YDrC$<Wt|i+>N{(O2
z#%jd%co**xe~y-ZsNwVIQo`g=vYCt-cM&liOm|Aes2P6?D((0~PJEsj@STT8iMCzz
z2Yf{6u@N2)&J*Fbs-CqDr<>4+lV(&6hw;9d6>!4F^0Iy(nD~-Y2);j|DN3~Q9PYM&
zIZ<YjVxcnx4pgsR=>R{#kf-pWEWRrN^KJp=@sR~A?x>EiTn|<sBEk(dT~|qjE9e7G
zq}2>5Ni5l*Nz>26wD#a*BB-dxL->S}7uO<(Pbv8@Cl+dAME$+yMxyrBrp+eE<^jDf
zYOjmhYop3EHFzTlJ<4d0;|ZA^b;D+{fo5^4Hc^{Yr?70CY8A)1Hp4HL*TpZ}g(f`3
z+F8AkdWU|q9Z14^;i(D|mN!p=i$dLFO;3BrwyDaKfA84l;aW;gA{0+~%eYq^v!aMp
zxW_GR3I%g!RK#$<IY%B^O}Nn}+|uq2$Lr^<7SZB28JpjcWW0>sVj&z=CdAoryHXa-
zk=8_c0y}r2#tJ?IzqHzCXDM=#%hOAljkvK!oLI#5Lkk3qmexAv#UFy1-E5?3`7|L9
zSg>W}U7?IuMOCzZ^Zy>dzEt8UdkT(X6$_c-BwWd`8Fqb%Qr4xE{TC%BoLWI5{C$~p
zwntZGr<0OGB2`9l%HowsQ8V4pSH`e)#PxvO-b&#@>r9$Z=P1l=YW;t<%6g|-ow3%e
zq-NdvQJ2~%7I@d>7>}AHWj99gnK{OCHh5RhL2#@Vx$)q0e8I1u4yXBki66MrDgB5u
I_yx=U0Ui8civR!s

delta 1751
zcmZ8hYfu|i6#i}!lFhP^0tqbzN*H+rRANJCm?@6@0H=eckCD<JRmTRp1SH8~2xXk9
z!w*Jh{NXtE@&~0Iwc~4iR1l)Y+FENV(qdJt)nY67sI|UYwLS{1p1Vo5C>idabM86c
z_nmX^?)jU?z4GL>u>$~VnR!TlJmqc^URLl5US*I1YP2@!@9JX6@{~2)=il!42L0iH
zR}WUpcnw1~3@dmYBMgrJ?K7lNePes5GpMfjhg1fqhtHX^+?imADcFoR7)m^gU>l>6
z_Hdw@l3cwK_9+;HpTX*nM*S@vG9>I*@HP%Gq_?!GEgc)xNP9?)su2c@r@m~9j5NHX
z;1J$rkcD)Ac%8PLc+DQMDd9Z@M=;J{4^g;53$(Wox~I0jzHGDDo>1_<AWYk)Hs8}7
z5VavS9JSNdF$Kq=P_`D_cBj@OLLVqNkqp&pK^gh@NWsULW>C~%tEjG1o4W%HHcvhM
z366Z6RPZULd5<+{WyH=R{G#>Lt-mvvb}$KlFcdI%PkXrQCU;nKhqQ?5);c@2Fv;k0
z2i4YSg~N)!Wc-aQHq46|F7UIqY0Ezh#e7y;As01hT1R)MjWK>ks!BTrg@*kZovsO=
z^FsR#c4~t>-~?Z1_p;OcL3<OM;nViY+%G69vVl6B!C87Ttb~=;)4WjLNLdltTPm{L
zFe8(GUsAq_ez#yYQCX9yoZ}O6KB1qJAELToYSkK1R}KrU(L|20l6BDpmK&S!6}~3?
zIm(n^b}pcXIY~n_q2xm9!-ROhQkgFhvvvLmQWN~$2LB-?hxlidS<2p@wsw7zzYSaQ
zjm}`j1isZfplKxPEI5X9I+oyfAmu8ojAgs$@yHdVkPNz!`aqh}FA?w>$C{N%;GHD!
zJDev$#|;bAV0@Iq`aTZK4?0{V?WE%fAw0RH=5~Q_8`S_KM)rt~B@SamuQL(*UR)pq
zGnQcxKagd?2B`RvtQ5@gf{dkvT9wgCsJk;N^?{3n0-6leCIhu8fhyXx!s5!4v#GCV
z@to+6VmtN00;~A4%)H)V_->5hr5N^(VHAjAb-8&IIYX3a#tf|`u+usS8+Or4xEtws
z8ZJD8T<k#}fmYxJRN_S>&y0W#QL7T7gcJ)*>1iZ^-txE*wuu<{uFOI9CSRRZK)r3r
zTHBkPxesCe;+U}%kLj1mL?FWk^l)<K6m>#MT|g>Zz;aevw49DJexg6cPn0q)3wnC?
zmFLFr)&ML+<s)$9`i>e_3<sYehZi}E*<pT%vo!DUFa`#Y5l<Y4BubAa=E5I!R##r{
zxX+N)w@8)*tKF^?mu6AF^z{*4^Lb}s$|ONf@j{n##fQ(s7srp`t|c3uLJ@gx`ZrRf
zPm+w9E7yCSvDsj3Uc^XE`YMQrK7~5lK384yWVv9-^TnWzVk&M6hWxED>@eIZ;XXia
zNqkSpqF6GZyS~Q%xU4ZL?cVItw&b}1{f4xD{7kQ-xas|gJ1MMR^qVfO1if|h;B*Tv
fl4HUp{7TPsvi_u^-}Ln|u2M`U{~CQ#P00Bd(|D=-

-- 
GitLab


From ca51d899d5ff4c0032a4fa606da18c802a154c81 Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Mon, 17 Feb 2025 15:46:59 -0700
Subject: [PATCH 11/17] added comments explain world code as many things happen
 in it and needed some explanation

---
 .../src/World.java                            | 136 ++++++++++--------
 1 file changed, 75 insertions(+), 61 deletions(-)

diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java
index 962649c..4763cc7 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
@@ -2,17 +2,16 @@
 
 public class World
 {
-	// //removed unused variables such as all final states and tempChat = ' ' which can just be local
-    public static final int SIZE = 10;
+    public static final int SIZE = 10; //size of world
     private int locationIndex = 0; //creates a local index for the location array in the Display method. // changed from i since that's not a great name
     Location[] location = new Location[100];//an array that'll track each entities type,location coordinates and if it can move.
-    int tempRow = 0;
+    int tempRow = 0; // temp row and colum for switching and swapping things in the world
     int tempColumn = 0;
-    int oldRow;
+    int oldRow; // old row and colum for switching and swapping things in the world
     int oldCol;
-    int turnSinceAtk;
-    public Entity [][] aWorld;
-    public boolean programRunning = true;
+    int turnSinceAtk; // to help with deciding if a cease fire occurred resets every attack
+    public Entity [][] aWorld; // world of entities Elf, Orcs or null
+    public boolean programRunning = true; //programming running
     
     GameStatus status = new GameStatus();
     // Post-condition: the position of the characters in the
@@ -21,13 +20,15 @@ public class World
     // determines the appearance of the Entity(O or D) or if the
     // element is empty (spaces become null elements)
 
+	// constructor initialize the grid and the entities location
 	public World()
 	{
-		aWorld = new Entity[SIZE][SIZE]; // this is null anyway
-		aWorld = FileInitialization.read();
+		aWorld = new Entity[SIZE][SIZE]; // world of the size 10
+		aWorld = FileInitialization.read(); // get info from the provided txt file
 		initializeGrid();
 	}
 
+	// print borders and initialize locations
 	public void initializeGrid(){
 		for (int row = 0; row < SIZE; row++){ // changed all instances of r and c so its more readable
 			System.out.println("\n - "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+"- "+ "- "); // removed unnecessary print
@@ -40,31 +41,34 @@ public class World
 		sortLocations();
 	}
 
+	// place the Orcs, Elves or nulls entities in the world
 	public void initializeLocations(int row, int column){
 		if (aWorld[row][column] == null) {
 			System.out.print("| ");
-			return;
+			return; // no entity so move on
 		}
 		char currentCellAppearance = aWorld[row][column].getAppearance();
 		System.out.print("|"+currentCellAppearance);
 		location[locationIndex] = new Location(row,column,currentCellAppearance);//Initializes each Entities location/type
 		if (location[locationIndex].getType() == 'O') {//this checks the type and counts +1 if it's an orc
-			Entity.incrementOrcCounter(1);
+			Entity.incrementOrcCounter(1); // increase the count of orcs
 		}
 		if (location[locationIndex].getType() == 'E') {
-			Entity.incrementElfCounter(1);
+			Entity.incrementElfCounter(1); // same with elves
 		}
 		locationIndex++;//Cause each initialization of the location[locationIndex] to go to the next element
 	}
 
-	public void sortDead() {//supposed to try and sort null elements and bring them to the end doesn't always work as intended
+	//supposed to try and sort null elements and bring them to the end doesn't always work as intended
+	public void sortDead() {
 		for (int locationIndex = 0; locationIndex<=Entity.getElfCounter()+Entity.getOrcCounter();locationIndex++) {
 			if (location[locationIndex] == null) {
-				continue;
+				continue; // its null then move on
 			}
 			if((aWorld[location[locationIndex].getRow()][location[locationIndex].getColumn()] != null)||(location[locationIndex+1] == null)) {
-				continue;
+				continue; // if the element in the world isn't null then move on or next index in location is null
 			}
+			// swap the values in the array
 			location[locationIndex] = location[locationIndex+1];
 			location[locationIndex+1] = null;
 			if(locationIndex-2 >= 0 && location[locationIndex-2]== null) {
@@ -73,15 +77,20 @@ public class World
 		}
 	}
 
-	public void sortLocations() {//puts the elfs in the beginning of the array, checks if there is an orc before and elf and if there is it swaps positions in the array
+	//puts the elfs in the beginning of the array,
+	// checks if there is an orc before and elf and if there is it swaps positions in the array
+	// basically moves all the entities (orc or elves) to the front of the array since we don't care about null entities
+	public void sortLocations() {
 		int orcCounter = Entity.getOrcCounter();
 		for (int j = 0; j<Entity.getElfCounter()+orcCounter; j++) {
 			if (location[j+orcCounter] == null){
-				continue;
+				continue; // if its null then move on
 			}
 			if(((location[j].getType() != 'O')||(location[j+orcCounter].getType() != 'E'))) {
-				continue;
+				continue; // if it's not an elf or orc move on
 			}
+			// get row, columns and entity type (char of O or E)
+			// and set the new values
 			tempRow = location[j+orcCounter].getRow();
 			tempColumn = location[j+orcCounter].getColumn();
 			char tempType = location[j+orcCounter].getType();
@@ -93,40 +102,42 @@ public class World
 			location[j].setType(tempType);
 		}
 	}
+	// handles attacking
 	public void attack(int index) {// new
 		if(aWorld[tempRow][tempColumn] == null){
-			return;
+			return; // if null move on
 		}
 		if((location[index].getType() == 'O') && (aWorld[tempRow][tempColumn].getAppearance() == 'O')) {
-			return;
+			return; // if attacking their own kind move on (won't attack)
 		}
 		if((location[index].getType() == 'E') && (aWorld[tempRow][tempColumn].getAppearance() == 'E')) {
-			return;
+			return; // if attacking their own kind move on (won't attack)
 		}
-		turnSinceAtk = 0;
+		turnSinceAtk = 0; // reset since we are now attacking
 		if((location[index].getType() == 'E')&&(aWorld[location[index].getRow()][location[index].getColumn()] != null)) {
-			Entity attackingEntity = new Elf(); // Assuming Elf is a subclass of Entity
-			attackLogic(attackingEntity, index);
+			Entity attackingEntity = new Elf(); //initialize elf which is a subclass of entity and call attack logic
+			attackLogic(attackingEntity, index); // with elf as the attacking entity
 		} else if((location[index].getType() == 'O')&&(aWorld[location[index].getRow()][location[index].getColumn()] != null)) {
-			Entity attackingEntity = new Orc();
+			Entity attackingEntity = new Orc(); // exact same idea just with orc
 			attackLogic(attackingEntity, index);
 		} else {
-			location[index].setCanMove(true);
+			location[index].setCanMove(true); // they can move if they aren't attacking
 		}
 	}
 
+	// logic for attacking gets health and subtracts the attacking entities damage and sets the new health
 	public void attackLogic(Entity attackingEntity, int index){
 		int entityDmg = attackingEntity.getDamage();
 		int HP = aWorld[tempRow][tempColumn].getHitPoints();
 		aWorld[tempRow][tempColumn].setHitPoints(aWorld[tempRow][tempColumn].getHitPoints()-entityDmg);
 		int HPAfter = aWorld[tempRow][tempColumn].getHitPoints();
 
-		if (GameStatus.debugModeOn) {//attack data for elf attackers
+		if (GameStatus.debugModeOn) {//debug attack data for elf attackers, apart of elf subclass
 			attackingEntity.debugAttack(status, tempRow, tempColumn, location[index].getRow(), location[index].getColumn(),HP,HPAfter);
 		}
-		deathLogic(attackingEntity, index);
-		victoryLogic(attackingEntity);
-		if(GameStatus.debugModeOn) {//lose condition data
+		deathLogic(attackingEntity, index); // check if attacker killed enemy
+		victoryLogic(attackingEntity); // check if no enemy remains
+		if(GameStatus.debugModeOn) {//debug lose condition data, part of subclasses
 			if (attackingEntity instanceof Elf) {
 				attackingEntity.debugLossConditions(status, Entity.getOrcCounter());
 			} else if (attackingEntity instanceof Orc) {
@@ -135,14 +146,15 @@ public class World
 		}
 	}
 
+	// if the enemy lost all its health it is killed and the count of that entity goes down
 	public void deathLogic(Entity attackingEntity, int index){
 		if (aWorld[tempRow][tempColumn].getHitPoints() >0){
-			return;
+			return; // if they are still alive then move on this doesn't apply
 		}
 		aWorld[tempRow][tempColumn] = null;
 
 		if (attackingEntity instanceof Elf) {
-			Entity.incrementOrcCounter(-1);
+			Entity.incrementOrcCounter(-1); // increment by a negative value
 		} else if (attackingEntity instanceof Orc) {
 			Entity.incrementElfCounter(-1);
 		}
@@ -152,64 +164,64 @@ public class World
 		}
 	}
 
+	// if there is no more enemies than the attackers have won so print out who won and end the game
 	public void victoryLogic(Entity attackingEntity){
-		if (attackingEntity instanceof Elf) {
-			if (Entity.getOrcCounter() > 0) {
-				return;
-			}
+		if (attackingEntity instanceof Elf && Entity.getOrcCounter() > 0) {
+			return; // if there still exists orcs and elves are attacking then no victory
 		}
-		else if (attackingEntity instanceof Orc) {
-			if (Entity.getElfCounter() > 0) {
-				return;
-			}
+		else if (attackingEntity instanceof Orc && Entity.getElfCounter() > 0) {
+			return; // same exact thing but opposite
 		}
-//		System.out.println(attackingEntity.getClass().getSimpleName() + " wins, no more opponents left.");
-//		System.out.println(attackingEntity + "win no more orcs left.");
-		programRunning = false;
+		// get the name of the attacking entity since they won
+		System.out.println(attackingEntity.getClass().getSimpleName() + " wins, no more opponents left.");
+		programRunning = false; //end game
 	}
 
+	// check perimeter of the index
 	public boolean checkPerimeter(int index) {//looks at all the spaces around the current index of location[index] looking for things not null
 		if (location[index] == null){
-			return false;
+			return false; // if null move on
 		}
 		for(int row = location[index].getRow()-1; row<location[index].getRow()+2;row++) {
 			for(int column = location[index].getColumn()-1; column<location[index].getColumn()+2;column++ ) {
 				if((row > 9)||(column > 9)||(row <= - 1)||(column <= -1)){ //ensuring row/column is in aWorld
-					continue;
+					continue; // if outside world then move on
 				}
 				if((aWorld[row][column] == null) || (location[index].getType() == aWorld[row][column].getAppearance())) {
-					continue;
+					continue; // if null move on or if they are next to their kind then move on
 				}
+				// if we are here then their is an enemy so stop and prepare to attack
 				location[index].setCanMove(false);
-				tempRow = row;
+				tempRow = row; // set temp row and column
 				tempColumn = column;
-				attack(index);
-				return true;
+				attack(index); // attack with the current index as the attacking entity
+				return true; // return true there is an enemy
 			}
 		}
-		location[index].setCanMove(true);
-		return false;
+		location[index].setCanMove(true); // no enemy so can move
+		return false; // no enemy
 	}
-	// these methods could be broken up into smaller ones
-	public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
-		if (checkPerimeter(index)){ // changed syntax of if statement still needs to be true
-			return;
+	// move the current entity
+	//changes the value of aWorld[][] must set old position to null then update it to the new position.
+	public void move(int index) {
+		if (checkPerimeter(index)){
+			return; // check the around current index if there is an enemy dont move
 		}
 		if (location[index] == null) {
-			return;
+			return; // move on if it's not an entity at index
 		}
-		if (!location[index].getCanMove()){ // changed syntax of if statement still needs to be false
-			return;
+		if (!location[index].getCanMove()){
+			return; // if it already can't move, move on
 		}
 
 		if((location[index].getRow()-1 != -1)&&(location[index].getColumn()-1 != -1)) {
-			moveLogic('E', index, -1);
+			moveLogic('E', index, -1); // logic behind moving
 		}
 		if((location[index].getRow()+1 != 10)&&(location[index].getColumn()+1 != 10)) {
 			moveLogic('O', index, 1);
 		}
-		if ((GameStatus.debugModeOn)&&(location[index] != null)) { // changed syntax of if statement still needs to be true
-			debugMovement(index);
+		if ((GameStatus.debugModeOn)&&(location[index] != null)) {
+			debugMovement(index); // debug the move
 		}
 	}
 
@@ -221,6 +233,8 @@ public class World
 		}
 	}
 
+	// increment the rows and columns setting the entity at the new location and removing the old one
+	// orcs move down and elves move up, so -1 for elves and +1 for orcs (for increment)
 	public void moveLogic(char entityType, int index, int increment){
 		if ((location[index].getType() == entityType)&&(aWorld[location[index].getRow()+ increment][location[index].getColumn()+increment]== null)) {
 			oldRow = location[index].getRow();
-- 
GitLab


From 2f79f59ff4852b4dec916b7a30842e506495b49e Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Mon, 17 Feb 2025 15:59:29 -0700
Subject: [PATCH 12/17] added comments to other classes specifically Entity,
 Orc and Elf to explain the subclass structure

---
 .../assignment3GUI - Classmate's/src/Elf.java |   9 ++++---
 .../src/Entity.java                           |  24 ++++++------------
 .../src/FileInitialization.java               |   9 +++----
 .../src/GamePanel.java                        |   5 ++--
 .../src/Location.java                         |   3 +++
 .../assignment3GUI - Classmate's/src/Orc.java |  10 ++++----
 out/production/501-gitlab/Elf.class           | Bin 860 -> 860 bytes
 out/production/501-gitlab/Entity.class        | Bin 1639 -> 1639 bytes
 out/production/501-gitlab/Orc.class           | Bin 859 -> 859 bytes
 out/production/501-gitlab/World.class         | Bin 5864 -> 6085 bytes
 10 files changed, 27 insertions(+), 33 deletions(-)

diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java
index 8647719..8474b4c 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java	
@@ -1,13 +1,14 @@
-
 public class Elf extends Entity {
-    public static final char ELF = 'E';
-    public static final int ELF_DAMAGE = 7;
-    public static final int ELF_HP = 15;
+    public static final char ELF = 'E'; // Elves are represented as an E on the grid
+    public static final int ELF_DAMAGE = 7; // damage
+    public static final int ELF_HP = 15; // health of each elf
 
+    // elf is a subclass of entity passing in appearance, health and damage
     public Elf() {
         super(ELF, ELF_HP, ELF_DAMAGE);
     }
 
+    // both are the debug statements for attack and loss conditions
     @Override
     public void debugAttack(GameStatus status, int tempRow, int tempColumn, int targetRow, int targetColumn, int HP, int HPAfter) {
         status.elfAttackDebug(tempRow, tempColumn, targetRow, targetColumn, HP, HPAfter);
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java
index aa1e351..56df1ae 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java	
@@ -1,69 +1,61 @@
 public abstract class Entity
 {
     //removed unused
-    public static final char EMPTY = ' ';
+    public static final char EMPTY = ' '; // this is for null
+    private char appearance; // appearance is O or E
+    private int hitPoints; //health
+    private final int damage; // damage
 
-    private char appearance;
-    private int hitPoints;
-    private final int damage; // added final as damage never changes
-
-    private static int orcCounter = 0;
+    private static int orcCounter = 0; // start at 0
     private static int elfCounter = 0;
 
+    // subclasses are appearance, health, damage
     public Entity(char appearance, int hitPoints, int damage) {
         this.appearance = appearance;
         this.hitPoints = hitPoints;
         this.damage = damage;
     }
 
+    //debug for each subclass
     public abstract void debugAttack(GameStatus status, int tempRow, int tempColumn, int targetRow, int targetColumn, int HP, int HPAfter);
     public abstract void debugLossConditions(GameStatus status, int entityCounter);
 
+    // getter, setter methods, add some more
     public char getAppearance()
     {
         return(appearance);
     }
-
     public int getHitPoints()
     {
         return(hitPoints);
     }
-
     public void setAppearance(char newAppearance)
     {
         appearance = newAppearance;
     }
-
     public void setHitPoints(int newHitPoints)
     {
         hitPoints = newHitPoints;
     }
-
     public int getDamage()
     {
         return(damage);
     }
-
     public static int getElfCounter() {
         return elfCounter;
     }
-
     public static int getOrcCounter() {
         return orcCounter;
     }
-
     public static void incrementElfCounter(int value) {
         elfCounter = elfCounter + value;
     }
-
     public static void incrementOrcCounter(int value) {
         orcCounter = orcCounter + value;
     }
-
     public static void setElfCounter(int newElfCounter){
         elfCounter = newElfCounter;
     }
-
     public static void setOrcCounter(int newOrcCounter){
         orcCounter = newOrcCounter;
     }
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java
index 538d46d..b43ef71 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/FileInitialization.java	
@@ -29,6 +29,9 @@ import java.util.Scanner;
   * Changed references of dwarves to elves. Constants related to the
   * Entity attributes deleted.
 */
+
+// this file takes in the txt file and initializes the world which is called in the world class
+// this is where we get the values
 public class FileInitialization
 {
     public static Entity[][] read() {
@@ -36,8 +39,6 @@ public class FileInitialization
         String line; // changed to this as it's going to be null regardless
         int row, column; // changed from r and c so its more readable
         char letter;
-//        BufferedReader bufferReader = null;
-//        FileReader fileReader = null;
         FileContainer aContainer; // changed to this as it's going to be null regardless
         try {
             aContainer = checkingFile();
@@ -76,7 +77,6 @@ public class FileInitialization
         FileContainer aContainer; // changed to this as it's going to be null regardless
         Scanner in = new Scanner(System.in);
         String filename; // changed to this as it's going to be null regardless
-//        boolean fileFound = false;
         while (true) // changed to this as it's still if false
         {
             try
@@ -85,7 +85,6 @@ public class FileInitialization
                 filename = in.nextLine();
                 FileReader fileReader = new FileReader(filename);
                 BufferedReader bufferReader = new BufferedReader(fileReader);
-//                fileFound = true;
                 aContainer = new FileContainer(bufferReader, fileReader);
                 return aContainer;
             }
@@ -96,8 +95,6 @@ public class FileInitialization
             }
 
         }
-//        aContainer = new FileContainer();
-//        return(aContainer);
     }
 
     private static Entity createEntity(char letter) {
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java
index 9bf3831..c1b141c 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/GamePanel.java	
@@ -20,8 +20,9 @@ import javax.swing.Timer;
  	Version 3/9/2021: Finally fixed that weird bug that would cause issues when one entity dies, I did so by adding a sortDead method
  					  at this point the program runs without any bugs and meets the design specifications I just need to add Debug mode now
  */
+
+// this file draws the game in the GUI and handles the "space key interaction"
 public class GamePanel extends JPanel implements ActionListener{
-	// removed unused variables like system.in
 	static final int Height = 300;
 	static final int Width = 300;
 	static final int gridSize = 30;
@@ -148,7 +149,7 @@ public class GamePanel extends JPanel implements ActionListener{
 			System.out.println("Cease Fire, Game over.");
 		}
 	}
-	// de-nest
+
 	public class MyKeyAdapter extends KeyAdapter{
 		public void keyPressed(KeyEvent e) {
 			switch(e.getKeyCode()) {
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java
index c79f863..44371f3 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Location.java	
@@ -1,4 +1,6 @@
 //Author Ethan McCorquodale
+
+// all information for location such as row column and entity type
 public class Location
 {
     private int row;
@@ -12,6 +14,7 @@ public class Location
         entityType = type;
     }
 
+    // getter setter methods for all the variables
     public int getColumn()
     {
         return(column);
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java
index 2984c89..c2d9120 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java	
@@ -1,14 +1,14 @@
-
-
 public class Orc extends Entity {
-    public static final char ORC = 'O';
-    public static final int ORC_DAMAGE = 3;
-    public static final int ORC_HP = 10;
+    public static final char ORC = 'O'; // orc are represented as an O on the grid
+    public static final int ORC_DAMAGE = 3; // damage
+    public static final int ORC_HP = 10; // health for each
 
+    // is a subclass of entity passing in appearance, health, and damage
     public Orc() {
         super(ORC, ORC_HP, ORC_DAMAGE);
     }
 
+    // both are the debug statements for attack and loss conditions
     @Override
     public void debugAttack(GameStatus status, int tempRow, int tempColumn, int targetRow, int targetColumn, int HP, int HPAfter) {
         status.orcAttackDebug(tempRow, tempColumn, targetRow, targetColumn, HP, HPAfter);
diff --git a/out/production/501-gitlab/Elf.class b/out/production/501-gitlab/Elf.class
index a86f871f5e71e57a6a183189c5f70b06aa23017a..9378f07d5e92dff96ac8ec456cb992b0f7b5f83d 100644
GIT binary patch
delta 27
jcmcb^c86`ld?r>t20jM<$xE1;S%n!`8AK-QFdF~>X;}s(

delta 27
jcmcb^c86`ld?r?220jM9$xE1;S%nx_8H6Y6FdF~>X(<LF

diff --git a/out/production/501-gitlab/Entity.class b/out/production/501-gitlab/Entity.class
index 42856365d5f59a4b42527ffacc08c880effed152..c6fa73c25e6473c62d60c4c222b61ee509c4e68f 100644
GIT binary patch
delta 143
zcmaFP^PFdc7PBA^0}BH$11AF?5b`q!GYCw!X3k<1pS+COhEZnnV`f`cMFv&|rOAaX
z;*)Jy3|Q5GJar(?jZu5@4i;-h{mEZgG#QO2%dzUQnlo@PSWFINbzrpyvTT4X(aEb>
m)miO<b~sGF&T7Nz3}m@XmSA(>=LE927#JCB7#J9s7;FKvbQzQY

delta 143
zcmaFP^PFdc7PBBP0}BHm11AGNkQ87LW)Pfg&78$3F?kuY4WsPj$IP~@N(`(F%99IO
z#3$RZ7_h1Xc^W{T8>7zT9W2(229v+AXfm2imSfdpwP4_2u$&yo>cDCPWZ42)qLWv%
ns<S!(?QooYoz;fb1;}!pEWzf$&jn<0GcYpPFfcGMG1vkCx@sA$

diff --git a/out/production/501-gitlab/Orc.class b/out/production/501-gitlab/Orc.class
index 3ded1a310dffbbd838082e1f5c38e04f123b0a2e..272d01a1808996a462f5b0c5cdc6f42630786dea 100644
GIT binary patch
delta 18
Zcmcc3cAITOFcT{W11AIL<_IQcMgTF$1NZ;{

delta 18
Zcmcc3cAITOFcT{$11AI5<_IQcMgTF`1Nr~}

diff --git a/out/production/501-gitlab/World.class b/out/production/501-gitlab/World.class
index e7a12584407ec9f5fb7373cf22ac4767d97e2521..4f657273fe51ab33ecc158b0d9f0d214c1ba8124 100644
GIT binary patch
delta 2362
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
Lj&2GF4I=*qGL;jC

delta 2158
zcmZ`)c~Dhl6#w1#;K93GWP3g#76Cz4wO);-siYu{mB~mzK}~`@aRFZ0Gczzs)Uq5?
zE-f_0xHM&x#{NVM5@k^WwX}T^%iLORnVNE(e&2nY{n6aH-~E>Jo%1{A{LZ=kQ!Y%B
zhpu+@0LaAeE%G+sNPp~6uouM=48?YP@!}OS{L!SK87*p|A*!ZLK|4Am$YoZ0W^v_w
z+oM(q`s9>CA-7LKC-zG)R&e_+TiLS3RFj-JZ(d5iI6k1@U7<O!)LOEtOkAz7R@#j`
z=~3_=6bjqQOBdQ!i>+P-humA4wsINK=u@EY$AJ2mA=+?6!BGsfMf&AP<IYRaRZBqz
zT$FJM-}~VQ1^M_<ebfJ>^ov?$O!3995@OURj4|q<(HuAg1rpw;*E$TVmy8pPG|m-p
zNHxn-q!Be+&RcMd>&Xb<7y%#nL4XS7I1VzR5QI2{ARX7?7DOV0JDEgyoYF!!kcAWY
zfL{qWz`$`ty(H%p2%V|C55!Vi9D)&#a7;i9zX?dBzF1h0gy~4eETm}qVxgzqP<%+u
zIzHFqq{~Kz%f=~nTR=2XHwA2{5f&_(H|fMa31RfX#5=LXk<OD0+=v|9gnKX*R@{tb
zn1)AaPasdFpMc$^Rm|L$>@MrEy!R14CZbc6^oQPb1sRfw{@Gn#wkaDm49>{SL?Hbz
z(`p1}bDYB`i}vT@K4fD#Zbv0%^6nj)eY57@O5%3LaFyFX+EU<q1v<%`oc1?-Y41*_
zJqEa(s0Hrhome(QKQpRR?F<~&Fk~}Bz<i$G&3r9ju5y^8g}4>DM3u*reB6%$EXBR3
zCZeq<#Oo+R3wL|)0FLn9F+Avr%~CAFCz|&Lo_$J8I$_s^(ua)tOheAtsQMt2AInI~
zd`!?~4bL3r8{7*)3G-R%%0L+{E~UlgJXwKfQI0xP;AKXp4>k<rA;$h;MtvntGg9t6
z)zSaY@dXhKduG6>CwHUx(v5|AG6aVvB+Qy-B%G)5j0UPPxL*S`9b*V;HG}#XskjC+
z@Hj(N&G4*66>9Jlp2S9uo3RcmYOw?Bu^SuEMm++|ESd*<f|KrICSZvYXxAX<sJRJW
z5saStU&Ys)`OtzDr(-zv)tDqhe-%}dBqfIM>P{!by3i#>-XeUCG~SG{*up~DiZpB^
znd?Yil>~Z$<a&`LdWrOG&`^n@0ex_z%JZPgbD=t=_J)Slj8Ljtqa6^R){AuwkjbM)
zgtl<CNn2SP;nR|;??6NgrS+r)Wf@e^8$Y~8iZ?QbJBV#3Tfr{2g550bw=^7r(n8ve
zBi@BWl#dT|%9ud<%igM`q#|sW^tKve8h;IY_psyaWkob$BIRaNvH-2*X**$eFg^RQ
zi9L4<_A?M&WX%D*Lb>gfe}f!uW?OYL#zIDk9-?OldtR$-0j<>ot<}pIwaF9_KI&vI
zW&RLQ`K?Wjbl@Fz)MS=g)jv%sl0%Ifn^fayMMDEZQri&}X&HdOkm~Y=YAOQ+9A?1!
z=*s|^Kgh0h6yq_(t~5dd9b+#zfhFvhmBh7{j9AAi6S$q>tMy>4^<osPHX4=0r0g&T
zkN*`BLSAVm9|hPFCmsiig6D2W5?8T&yZIh;pOkwh4jfhk&EYHl_ju6jkC~hWD}4-8
zX(82bBc@`~+KacugSX@wyo{k`GC}eWsbzbsIjg2SRX~WcIAH5=;)=3xr#pI)1J%wW
zjt9kZ4JQ+wXF`N~?hS2e$^Fk#%Jl+va`g<`|2M3cZyD^ftc>s2fXdIYn9q|r7d<Qi
z>OJV|afW#irChK1A;MZuC4xhO!0f~S@Uosd#jo@%b&8*YgbRGn;U}(S&VI&a{Dz2s
E0YHkykpKVy

-- 
GitLab


From 098aa627933812856176f48d89a675a0828edbff Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Mon, 17 Feb 2025 16:13:48 -0700
Subject: [PATCH 13/17] this was for refactor 3 that i forgot but added move
 debug to the subclasses

---
 .../assignment3GUI - Classmate's/src/Elf.java    |  5 +++++
 .../assignment3GUI - Classmate's/src/Entity.java |  2 ++
 .../assignment3GUI - Classmate's/src/Orc.java    |  5 +++++
 .../assignment3GUI - Classmate's/src/World.java  | 16 +++++++---------
 4 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java
index 8474b4c..7c2ea67 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Elf.java	
@@ -18,4 +18,9 @@ public class Elf extends Entity {
     public void debugLossConditions(GameStatus status, int entityCounter){
         status.elfLoseDebug(entityCounter);
     }
+
+    @Override
+    public void debugMovement(GameStatus status, int oldRow, int oldCol, int newRow, int newCol){
+        status.elfMoveDebug(oldRow,oldCol,newRow,newCol);
+    }
 }
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java
index 56df1ae..4859c34 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Entity.java	
@@ -19,6 +19,8 @@ public abstract class Entity
     //debug for each subclass
     public abstract void debugAttack(GameStatus status, int tempRow, int tempColumn, int targetRow, int targetColumn, int HP, int HPAfter);
     public abstract void debugLossConditions(GameStatus status, int entityCounter);
+    public abstract void debugMovement(GameStatus status, int oldRow, int oldCol, int newRow, int newCol);
+
 
     // getter, setter methods, add some more
     public char getAppearance()
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java
index c2d9120..4fd0c33 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/Orc.java	
@@ -18,4 +18,9 @@ public class Orc extends Entity {
     public void debugLossConditions(GameStatus status, int entityCounter){
         status.orcLoseDebug(entityCounter);
     }
+
+    @Override
+    public void debugMovement(GameStatus status, int oldRow, int oldCol, int newRow, int newCol){
+        status.orcMoveDebug(oldRow,oldCol,newRow,newCol);
+    }
 }
\ No newline at end of file
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java
index 4763cc7..1057a1c 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/World.java	
@@ -221,15 +221,13 @@ public class World
 			moveLogic('O', index, 1);
 		}
 		if ((GameStatus.debugModeOn)&&(location[index] != null)) {
-			debugMovement(index); // debug the move
-		}
-	}
-
-	public void debugMovement(int index){
-		if (location[index].getType() == 'E') {//elf move data
-			status.elfMoveDebug(oldRow,oldCol,location[index].getRow(),location[index].getRow());
-		} else if (location[index].getType() == 'O') {//orc move data
-			status.orcMoveDebug(oldRow,oldCol,location[index].getRow(),location[index].getRow());
+			if (location[index].getType() == 'E') {//elf move data
+				Entity movingEntity = new Elf();
+				movingEntity.debugMovement(status, oldRow,oldCol,location[index].getRow(),location[index].getRow());
+			} else if (location[index].getType() == 'O') {//orc move data
+				Entity movingEntity = new Orc();
+				movingEntity.debugMovement(status, oldRow,oldCol,location[index].getRow(),location[index].getRow());
+			}
 		}
 	}
 
-- 
GitLab


From 93f916234a2f80719bb4794c99ea32e6566df119 Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Mon, 17 Feb 2025 16:16:20 -0700
Subject: [PATCH 14/17] just rearranged things

---
 Assignment_1/{ => Scrap and Notes}/Notes.txt  |   0
 .../src => Scrap and Notes}/reworks.java      |   0
 .../src => Scrap and Notes}/reworks2.java     |   0
 .../src => Scrap and Notes}/scrap2.txt        |   0
 .../src => Scrap and Notes}/scrap3.txt        |   0
 out/production/501-gitlab/Elf.class           | Bin 860 -> 1090 bytes
 out/production/501-gitlab/Entity.class        | Bin 1639 -> 1685 bytes
 .../501-gitlab/FileInitialization.class       | Bin 3182 -> 3182 bytes
 .../501-gitlab/GamePanel$MyKeyAdapter.class   | Bin 1193 -> 1193 bytes
 out/production/501-gitlab/GamePanel.class     | Bin 4757 -> 4757 bytes
 out/production/501-gitlab/Location.class      | Bin 1160 -> 1160 bytes
 out/production/501-gitlab/Orc.class           | Bin 859 -> 1089 bytes
 out/production/501-gitlab/World.class         | Bin 6085 -> 6025 bytes
 13 files changed, 0 insertions(+), 0 deletions(-)
 rename Assignment_1/{ => Scrap and Notes}/Notes.txt (100%)
 rename Assignment_1/{refactored_code/assignment3GUI - Classmate's/src => Scrap and Notes}/reworks.java (100%)
 rename Assignment_1/{refactored_code/assignment3GUI - Classmate's/src => Scrap and Notes}/reworks2.java (100%)
 rename Assignment_1/{refactored_code/assignment3GUI - Classmate's/src => Scrap and Notes}/scrap2.txt (100%)
 rename Assignment_1/{refactored_code/assignment3GUI - Classmate's/src => Scrap and Notes}/scrap3.txt (100%)

diff --git a/Assignment_1/Notes.txt b/Assignment_1/Scrap and Notes/Notes.txt
similarity index 100%
rename from Assignment_1/Notes.txt
rename to Assignment_1/Scrap and Notes/Notes.txt
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java b/Assignment_1/Scrap and Notes/reworks.java
similarity index 100%
rename from Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks.java
rename to Assignment_1/Scrap and Notes/reworks.java
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java b/Assignment_1/Scrap and Notes/reworks2.java
similarity index 100%
rename from Assignment_1/refactored_code/assignment3GUI - Classmate's/src/reworks2.java
rename to Assignment_1/Scrap and Notes/reworks2.java
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap2.txt b/Assignment_1/Scrap and Notes/scrap2.txt
similarity index 100%
rename from Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap2.txt
rename to Assignment_1/Scrap and Notes/scrap2.txt
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap3.txt b/Assignment_1/Scrap and Notes/scrap3.txt
similarity index 100%
rename from Assignment_1/refactored_code/assignment3GUI - Classmate's/src/scrap3.txt
rename to Assignment_1/Scrap and Notes/scrap3.txt
diff --git a/out/production/501-gitlab/Elf.class b/out/production/501-gitlab/Elf.class
index 9378f07d5e92dff96ac8ec456cb992b0f7b5f83d..3655c02272a71c5542574dbe175e7519266afd86 100644
GIT binary patch
delta 565
zcmZ9IJ5K^Z6ot>Mu;4DT1)!jy_&~u`d_R!HLQIrI8%*pmtQPVp1Sx6ljNzBiP*_-4
zTKNO~EygpmW-&H9-@SA0xo77~e-9cT->+`~N+`Y<PiX@Nq9MdEDG+k%x0kI)=hV6B
z+zAA-<#KuOToUIKHQA9@4X4=_h-5F$stxC=U2S(Bid2<z*8+O0UaPdaE|gkzLeuHG
z9RfT3Pmw81Ar65ABWRfBIfJBEr&!PaspsJ1T>xo*=lgjrX)kcj;3N>_IgUkAh_`@=
zC1iLCEMrCKJ6gIo(uWa-rSuifg6!%gWsy@J7FM}kx?8YGV~W;DK1J&!zoI-zSF}M2
zaC#G4aw~i1bdZy}o$L)^4Tu^>K_aw>svv1s<^|EcAUd{btI===yT7*goRcd}JDH04
vV*Vi_|E=SElZ3K9cBLntx9NGC*i+u}$@WPys)+-V{7DmsBtLf+RPLi6YJ)os

delta 365
zcmZ9GJyHTe5QV=TV0Kw8CSV6d7e!G}7XLyctuit8LIftJ7NMsgkifvekTZA|%eS)>
zS|-z9PxpKMK9et-uD;(tfP1cA(&xq7T{OQn!<#l45ncmBhaO#aHhoY1?w@{-nr1P%
z-v0d6<g<P0QYj%(ZE_&m))clFaHtw_#IW2KKS`UYx+3rUx^H;v<0Z|7z6`%sEn2u>
z^;oU1tt8}_lVI-{DcG#M>=+AcflfvBKxd*xpoz!^Dnzm5Q_k0k9(1@=+9F@#{s(Ex
aAqznU)z&76t%78wlndD!8D6S0T>Su|)fp}T

diff --git a/out/production/501-gitlab/Entity.class b/out/production/501-gitlab/Entity.class
index c6fa73c25e6473c62d60c4c222b61ee509c4e68f..8864418cb1a2e33629521eace40214c29ee345ae 100644
GIT binary patch
delta 409
zcmZwD&q_i;6bA5boEiUhEiV!gAz5AV8fIl#+AS4Yh)}DZz~~Y#EFx_mZQ91vE3}Fr
z+O_BbTJ;QVT1MM~=;IPpAOmM+I6uBK%&T>kh(CQjJObE6<1XG2nLU5EzrTHW;&=Un
zo<PdoYPP%nPOshTAA7A<>%J?_gh-nAP}NRAVHh!tuqKg$Z9Lhqlt2zHBL(v2LXDbB
zX`2_BG3U~nP28{%!X#^$0LX9wR&dss!ZdFJb10fmnbi(7vgSyQ4b2BeU;&G!sj}K-
zCm(c5oGrMPP%x)5Wv-PyUKo%X!!pIQ%E>bK4>c1h@$D<jbF`Z-Bg*sdTVhycE+{G#
w9f}G?b)cwH+-fK7@jur82#vL$43FYXI}<gE`aiKAh$uEpF<gq&I5C9!H<Qgd+5i9m

delta 336
zcmZvXJx;?w5QX1nckLuNB*sE6kVyc84G0Jc5b{f;Z~|%?N)ABDDMlzt#RX^(9R(6C
zEiFB_2t1nxB(&0ucHZ~i?A}#Az4F`q`31lPqsQ{KdYY+QrK%F@uJ6I1f)W;ast8b%
zD?N6gkRX*;6D+w8G!{^2&Bj0|zFF4W*vVx1(!RXwhBVEpU4zBC+?#M=4<1>CeH_S*
z*|b|!l3Zz`mMe$3KUTX;3v3B3-sdLKZT8e|xNW}ai0%uUMjaG!iUxOQsi1Pql&qhS
xn3Cv|82n3gNPO5hI^#dbzX;33pNuYv$ca}bB+ma3y__hbFPBcs9dKg-!*6x3Ed2lg

diff --git a/out/production/501-gitlab/FileInitialization.class b/out/production/501-gitlab/FileInitialization.class
index c6fd566047463a563e880b13bbfa3db622aecb24..da5d0ff30627fe6a372cb4e1ba2556772f4690f0 100644
GIT binary patch
delta 196
zcmWNL%L+jO5QaZHA{(irq+C*Rzh9GUSdfMLaakR7BxT_Rlq}WRc?#u4Y`uhMFiri<
zKY#Ph{FI;aQq3m6u{3|RAQmFniQ*)Nn>aoa1WAfZNtY%gl_N_<v`L;m1xA!uP-ZPt
zjVd}Fj?_3&=R$+4_!}+mw0Y2dKP_idXn<7~9gI<!;AKjfnLy_PR4K9&z*_JdBWwM*
WGy-hpiJhc-Iiu6%Ko8CE*oJ?O+aVGF

delta 196
zcmWNL%L+jO6h)UAk%`n*l2=OJ?{|ni2Fk!A+%UOy5z4?1C>g3d^A*aEnEHwP4bEh@
zPv`8lkExi-du6rw4b}S7LfDAmB#xT|UXlb!5g{!uBbp^oj-qIt0v&N9N=&G*q{^Ba
z8V&aJIMU=yiz{tzGT-I;L6;}}&&zhPL`T>q=wgb(i~w^fUI=hW8C8I532y|yH465x
XM<>iqp4iLwAmv8}oEV}TKF9bEfBPW~

diff --git a/out/production/501-gitlab/GamePanel$MyKeyAdapter.class b/out/production/501-gitlab/GamePanel$MyKeyAdapter.class
index bb20d92574b91717d122dcad35daa9f1c30c10a3..5352d307ceb607c8ff71bf7632daa0768037370a 100644
GIT binary patch
delta 55
zcmV-70LcHT38@LNkplsllad3dC7S>s0G$9W0G<Fk0HXjv0Hgp&0Hpv-0Hy#>0H^?0
N0I2|50IZW=1WLlH4><q;

delta 55
zcmV-70LcHT38@LNkplsklad3dC7J*r0Gt3V0G$9j0HOdu0HXj%0Hgp+0Hpv=0H**~
N0H^?40IQQ<1WLh`4=w-z

diff --git a/out/production/501-gitlab/GamePanel.class b/out/production/501-gitlab/GamePanel.class
index 65bf4166eb8b0acaca67ba68cc5af466dc60156c..d5ae57f40a5565f407a063935c7b3ee1ed96f7a9 100644
GIT binary patch
delta 396
zcmWNN*(=0h6o#Kq6f;bdI}rwBi()kPondU*X~vN3>oC?LWZ%j%KNBU~C`qE`LgLb$
zd)IQ~UvTMkZobZW-}64-@tJ+*=Np|lo<O1rAqE4nM36u#W->`6n<UCfriv8pLuU(0
zBaC#-pf3-}AV?HCESf|AZM70CS|d5KCs(|ASjnf50vaizk78yhVVhFCqPvjkHI;sM
z=#O$#6NQ~DYN()As*X15aniu3n5SuCjb^d7a7HUvGQFjpM>=??lTRG{;#2{2sRUfg
zPPb~IM|tS=-y2?4O+S$gU|~?0h9qKGB1XhCCRF1RF(G7=tmEc{DQ@uaCY>*4`D0E+
zF|QI?P&O9*4@Q$}Uy=hX3-JnZtjd{|$q;ik8<eq$jV)o{5!PK?>`CyxEIJU?5r-U0
W#Hswk%Ox6j@_NF@3+I|CeC{8GZBF_C

delta 396
zcmWNN+bhFi7{@=atk_t~ot!c@LOE?tIb>_IA!o9g)SPn6xtwA&heY@xC3d4EiQ0w4
zr91bo<;K6@($iZ{J<t0*&*%Gm&n@Sc=ZM~7CYChfNykVA$z+j7HpN&d!-|6(+~jH>
zdY3MrL<%&c!4Y4Gjw19FYd*ub-9{XCOwylDxy)5aR!KEgv`P$8!yL7QspC|BF0pZg
zGdi8{qkL{sX`mDjPP{bA>!Jxi&5Y5)j4aroO-9=}ql0TYxs{Gbx_PIEPkQ;qr(*D{
zZ2FXkfa;)M%`y<ZH@+%wkQ4?fVMz203t~h7qxfWbka39<qHK~7Qyeo*M1XJ1@+H+j
z=2a>S%F3d0u@rqUWvcFFF<?a$uVH3gY+4Z$Hs$OP^=#o{TXcs-=MDjO1-i#P`>b-v
Z0Y`#3mMc!U5*zN&c#`ae3oSEg;U7M-PMrV%

diff --git a/out/production/501-gitlab/Location.class b/out/production/501-gitlab/Location.class
index dcd0b492f37745e08e7c54f768482e9b63f87229..4b1b5b63ea49b304e85f6edcd9e3f00f3276f3e9 100644
GIT binary patch
delta 117
zcmeC+?BLuW$|TCoz{0=@gggv<47?1&KvIH%f3g-+6r;%G|4gEjXECWy{>LOX`8tz2
zqcl*&c5(-^%;X4W16D-_RtBZXj?ChdmoV!ys(@9$WY%ES0E%mZ#dTQ>SapCrT`;eb
Gg&zQTuNeaX

delta 117
zcmeC+?BLuW$|TCkz{0@Jz{$YHz{kMNAk4tSAi=;pS&J!(QE>8qCeg{WnA90X!K~{{
z>XQ#LiA@$^)?k%pU}cb*?8xjs*@jtW@)Bl!Mn$limq0mHpqv^|PJFU1ivg=9kf#Oa
IRkH8{05Pr@1^@s6

diff --git a/out/production/501-gitlab/Orc.class b/out/production/501-gitlab/Orc.class
index 272d01a1808996a462f5b0c5cdc6f42630786dea..5a83a7671771031d497e23f09b37619b30690307 100644
GIT binary patch
delta 565
zcmZ9Iy-&hW6va;~6l{?WfP#SH2MVJ2{edJ7VxmoS!NeV<aS&*tAS0`rG5jSg3=Sr)
zPVW9M#`9iHF{Vl1@7{Orxu^Zo-h=wb_v;&g3d%3~Q$~l5Xb3S(DhN6EHy6&MePUmC
zZWRP_mSqi|E6UkKU3A1%({8mDL~`e+wWfX9uC+T4WvZ<Fl>*Ia)T>U{g^JT4wCt|i
zA+Xc`RI;Th#GxR;2r8y|CXw>$H0zl^^(=h63n0VyT)(I$3-g@QISB+Y&S!xX;;rZ|
zBFj_35|*XDt!8>7eHdYwQeWjP$gW;c4teQeVujm<yNLp6OwuaJCuxo3msBKalGaH9
zPH$jSY-R6^4q{R(q<TY`1EPvikO(cJGDyaic|kNUh=wiNsx;ij&adqq=fp~*kV?mV
vG5-*e|JHH-g@m*|a;3+fx8Zpk*p=RN!X8OPHLy<-A8Fu#<mb+k%zgL+d$c<g

delta 337
zcmYk0I}ZUt6ot>uGT4YMJlAu*AM07FNHl7HNUIg4U!kB-NVNWf${!JDu4Kt1GvA$i
z&bjv<e`@FPzTN<=Fxxx3(|Ktf7OFW<BLfRrHWYI3kVhe`J=Vp)x&)iO7|OgWhodS5
zRr(w{fjAO8HBypY^XsF|*FpnL(Z7_x{pnLk!4>_6UXZ_fLoKu=!$pVFO}dLN$rkF7
zB0_yqRA@lbLIEj8_Yfm9m49m{7^e=(>kHfyQQ@~pnh_aU#Q(~|MRd4`#+b2+ffI30
EKgPiqz5oCK

diff --git a/out/production/501-gitlab/World.class b/out/production/501-gitlab/World.class
index 4f657273fe51ab33ecc158b0d9f0d214c1ba8124..5fb1ed8a7e620a133b7497b4b1d38f1ef15457ab 100644
GIT binary patch
delta 1410
zcma)5TWC~Q6kTT~nasU&CmCm^V@qNP##Bu$F%u=&fcemvS{21~0wRKuOjApe0li5P
z#X!-vBKSJ_lp;m&t4M52p`uVqjE!l0C9OKPzWPjCHCp>HX>gtU68}1vduH!*_F8+d
zv-j<<*i)eoPJMm`z!FUL=tl#M8iF`y;42scflO=j+RVFZ>%4&>cWX(eRmW-!8@Par
z0^#QLrjC|Xna*@uy4@6r%~@IB)Rt~Ao6L@_HOu*%+bGNPCc;KrrgL+9OI^FU+1w^e
zgRg7%1$;Y15aZGemgPUv@h2YV;V%P?_*)(eUJ*~^c5QAhCIyP+POVrDXo>J87!bJ3
zntiw;$Fx$7#nJ<YWI`_ssnc8pxQ@tWdP<DS!+KTWH#}D-z*2mRtNa(JbfU)eHH@kW
zRm@gVCGaE4=NjXEeCFf2gRFIsS$QxtLyXAdq20tSG^*<rt{gdBO(#ZKF3xngO7JFb
z;5+hX85x8>K8acpXC<an$*0EqWPB}LRjn8kR{kvrIr%%>{5&&|I|-ji%z5Pr)e5X|
z7><T-kzsfKib}Vpx3Ll5TUi4*hntovuyyt=<lsDRS^QZk3W}(zxL}+Nkx0F#>JYha
z;|{AC@+=T#Gbrn>&0whtL}$%fyhvkBAK*i-Bl4q2KN*{+)oxHVEhY!h>!EusZq=Dy
zi^oSj$MFLh{df_F@guDq&RZHk(aN>%PKSRA+l3Hi)0p97JI|r$TTIgut@7Fkq`WjK
zFHOoxla*gYV-!3Zts|~5R$Ad+I<UaQEpTwEWjXNWhnes+&RD|QVqX$j8Gm-!Nwizd
z_G3EsTLa)D?u5s7!o4c_NxU%jGny0+XK^3$C>Q(^vhl55UFE$fC`_J3r)~6MeWdOP
z=AXiQ>psJ-Rr9!A!gql0pc~Ta8GZQr7;0R1ePs0!ym|_I2;KWXpgo*7)-uX!-au5o
z^FrmOy}Sd-0XWI(&$2bcY{~=t0(ZnDX3|pwGVEE@;;9~YRg*J>JWVsoW=~*wHO2Rn
zP|e7J#L}*Ta#eFtvJaV)wyvTicLru`?86TGi0hzox6ydnK2sswb2ltE+3=hz8hV)7
z)-;nJ9`Fa|;T{&@K9*5QinTUl%R}tKBMN=&2?M%45#9KeUy+*AZfAg$HD=AJ8V-Ji
i69oJ58yz2hXAU5r)<c5sS?dG*!#$n;znH*(c<CvQAy}jU

delta 1483
zcmaKsTWl0n7{~u-X1Y5&JG;GY7ihPpv0aOmxO7Ww3<)KHLQF#-VEaOdv~<yj(v7uX
zFeFW^KzJ|^P9J#Sfd?;-3aR^Gu!+$k6cDjqiy~D}xl;t?vI74zJ2NdW>}Jn?=bZ2R
zeb<>?snL`*_TbYI084~^(0VU0V8O&u8^_Qo5b4fzZGLq{c1vbcrnf)Do8vZ4z!nH(
zd%9O=-&99m+c@PNEy?y+sK#j<-(p<A&h%_l)=L#eAUO9WexB`6D&O1q!BNTfZJ42A
z$YAh}jGD_rw*<6p!o<IFotcc@v2Yjng1B#^19`c}95)^cB;{c<sRxCSyF<;9A7Mk_
zC+4EzXE`3K4KY;ifK&2eC>f6Mwg>^P6EbDBi!*Y&)l~Hh@0A^}6u;su{{<Rdt#NA=
zwd%sDdZkqZ9cBFfMtzOn`8elVwz!s)@~v>Sn2`Iz+iCZd-Mn1cHNfE7@9HSYv+H+R
zHFz1n;}7yDscAxw<<TNyjHKU<WWT+G#M($xvm(YF|9uF%{x^I6d1s?24^719K6j7V
z3beU|cO&OW=#92DdNI9*^*HZ%4d5s)I9ah)F3Z4i{ORx~<)vtXSp|!yNVr?P+$ZcM
z`!D>>XioSNm|dZcO1kJ0UN5O2VQ0xG2`frlT2%~-XafxU+QSY@bz<1D(-{9pxI}`E
z+1QWElnksy23IH*VN#whoki-!(v769Dr;J(sH#gqyH9QRsqHRR)i?m7B4Nc@pZD<r
z*9kdN)=G*|UYqhN3@q>|3tWn_HK0Y+EPaL%$FigR3tCpj+FtQ0n?|qGSsk;m+v&DO
zyF)(hkXIL;#$bl?2#Y)_MSWc*n^x%CRdgykHEt`9{2!EG#@<MjHVmV<Dt!cILsbr6
z9pr_MGhAOlM1Ee;IPf+{X*z{L-|65CrzQfSke#eArwcymuA`4x7Uig`;39{$C9MZg
z&s`0FWBi@;ZhCwnhi^Va+S{%z8CZD$b=*GD<h$vx<Lo3jeNj$ZnpIxRdFo`>r&H+i
zQ|OwJ0&9|fo`H|zNFjWovrY!&y7<C@u?7`TBAr9_lS0r572;U+`W&_uuDG65+pQFy
zDcmU)o_Pn(HofMttynW1`O|z-f$Nxu8+Z{@ScaRNyMNG)zFT;QZIk%VNu%%r81mB?
z!Zkj2YS4$=kyO%kXVBGv@v*&6W1U>}E}J43tdB;VAYZMw@juTjN)H5thB=P_`LS4Y

-- 
GitLab


From f857d4a5fdd971ebba127133ca4339ab28cc52ae Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Tue, 18 Feb 2025 01:14:18 -0700
Subject: [PATCH 15/17] wrote the readme

---
 Assignment_1/CPSC501A1W25README.md | 392 +++++++++++++++++++++++++++++
 Assignment_1/README.md             |  19 --
 2 files changed, 392 insertions(+), 19 deletions(-)
 create mode 100644 Assignment_1/CPSC501A1W25README.md
 delete mode 100644 Assignment_1/README.md

diff --git a/Assignment_1/CPSC501A1W25README.md b/Assignment_1/CPSC501A1W25README.md
new file mode 100644
index 0000000..17538ac
--- /dev/null
+++ b/Assignment_1/CPSC501A1W25README.md
@@ -0,0 +1,392 @@
+# CPSC 501, W25, T02
+### Devon Harstrom, 30132397
+
+---
+
+### Info:
+> Used code from Ethan McCorquodale a classmate who gave permission to use this old code
+I then refactored it </br>
+All refactoring was tested on: </br>
+Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java
+which tests the world functions to see if the game runs properly 
+> other testing was done in the GUI outside of code as it is a GUI based coed
+
+---
+
+#how to run:
+> run the java file Simulator.Java in the refactored folder
+> enter a txt world file for a basic one enter:
+> Assignment_1/refactored_code/assignment3GUI - Classmate's/src/data.txt </br>
+> This is the map that the Gui was tested on during the refactoring
+
+---
+
+### Refactors performed:
+> Refactor branch 1: De-nesting code in world (major) </br>
+Refactor branch 2: Pulling out methods (major) </br>
+Refactor branch 3: Rearrange classes? (major) </br>
+Refactor branch 4: Name changes, removing unused code, etc. (small) </br>
+Refactor branch 5: Comments (small) </br>
+
+---
+
+### Explanation 
+
+##### Refactor 1:
+> Refactor 1 was de-nesting code blocks in the world.java file and class
+> The original file had lots of nested code which made the readability and understanding 
+> of the code harder. So as a solution I de-nested this by taking the opposite if statements and returning
+> if it was true so for example:
+```
+if(((loc[index].getType() == 'O')&&(aWorld[tempRow][tempColumn].getAppearance() != 'O'))||((loc[index].getType() == 'E')&&(aWorld[tempRow][tempColumn].getAppearance() != 'E'))) {//makes sure it's not attacking it's own kind
+    turnSinceAtk = 0;
+    if((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()][loc[index].getColumn()] != null)) {
+    //... a bunch more if statements
+    }
+------------------------------------AFTER------------------------------------------
+if(aWorld[tempRow][tempColumn] == null){
+    return;
+}
+if((loc[index].getType() == 'O') && (aWorld[tempRow][tempColumn].getAppearance() == 'O')) {
+    return;
+}
+if((loc[index].getType() == 'E') && (aWorld[tempRow][tempColumn].getAppearance() == 'E')) {
+    return;
+}
+```
+> This makes it much easier to read and understand
+> I did this for every function in World which includes
+> Constructor, sortDead, sortLocations, attack, checkPerim, move
+
+
+--- 
+
+##### Refactor 2:
+> Refactor 2 built off refactor 1 as now that the functions were properly de-nested
+> I could separate functions into smaller functions in the World.java file. Adding again to the readability
+> split up functions stops some functions from being too long which happened alot in the original code
+> For example the move function originally looked like this:
+```
+public void move(int index) {//changes the value of aWorld[][] must set old position to null then update it to the new position.
+    if (checkPerimiter(index) == false) {//checks the perim for things not null if it finds something it returns true and the move code below doesn't run
+        if (loc[index] != null) {
+                if (loc[index].getCanMove()) {
+                    if((loc[index].getRow()-1 != -1)&&(loc[index].getColumn()-1 != -1)) {
+                        if ((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()-1][loc[index].getColumn()-1]== null)) {
+                            oldRow = loc[index].getRow();
+                            oldCol = loc[index].getColumn();
+                            loc[index].setRow(oldRow-1);
+                            loc[index].setColumn(oldCol-1);
+                            aWorld[oldRow-1][oldCol-1] = aWorld[oldRow][oldCol];
+                            aWorld[oldRow][oldCol] = null;
+                        }	
+                    }
+                    if((loc[index].getRow()+1 != 10)&&(loc[index].getColumn()+1 != 10)) {
+                        if ((loc[index].getType() == 'O')&&(aWorld[loc[index].getRow()+1][loc[index].getColumn()+1]== null)) {
+                            oldRow = loc[index].getRow();
+                            oldCol = loc[index].getColumn();
+                            loc[index].setRow(oldRow+1);
+                            loc[index].setColumn(oldCol+1);
+                            aWorld[oldRow+1][oldCol+1] = aWorld[oldRow][oldCol];
+                            aWorld[oldRow][oldCol] = null;
+                        }
+                    }
+                    if ((GameStatus.debugModeOn)&&(loc[index]!= null)) {
+                        if (loc[index].getType() == 'E') {//elf move data
+                            status.elfMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+                        } else if (loc[index].getType() == 'O') {//orc move data
+                            status.orcMoveDebug(oldRow,oldCol,loc[index].getRow(),loc[index].getRow());
+                        }
+                    }
+                }
+            }
+    	}
+    }
+```
+> which is very long and also has some potential repeate code with:
+```
+if ((loc[index].getType() == 'E')&&(aWorld[loc[index].getRow()-1][loc[index].getColumn()-1]== null)) {
+    oldRow = loc[index].getRow();
+    oldCol = loc[index].getColumn();
+    loc[index].setRow(oldRow-1);
+    loc[index].setColumn(oldCol-1);
+    aWorld[oldRow-1][oldCol-1] = aWorld[oldRow][oldCol];
+    aWorld[oldRow][oldCol] = null;
+}	
+```
+> so separating functions also allows me to reduce repetitive code, and i can use polymorphism to add to this
+> this is what it now look like in refactor 2: 
+```
+public void moveLogic(char entityType, int index, int increment){
+    if ((loc[index].getType() == entityType)&&(aWorld[loc[index].getRow()+ increment][loc[index].getColumn()+increment]== null)) {
+        oldRow = loc[index].getRow();
+        oldCol = loc[index].getColumn();
+        loc[index].setRow(oldRow+increment);
+        loc[index].setColumn(oldCol+increment);
+        aWorld[oldRow+increment][oldCol+increment] = aWorld[oldRow][oldCol];
+        aWorld[oldRow][oldCol] = null;
+    }
+}
+```
+> where I can just pass in parameters and have one function.
+
+---
+
+##### Refactor 3:
+> Refactor 3 separated the entity class into two subclasses Orcs and Elves
+> This allows a better structure in the code and the potential for other entities
+> I can also move debug statements to the new subclasses and keep track of entity count 
+> in the entity class which makes it easier to understand. 
+> here is an example of the old and new entity class with the elf subclass:
+```
+---------------OLD------------------
+//Author Ethan McCorquodale
+
+/*
+  Version Feb 17A, 2021
+  * Added method so an Entity can damage another Entity.
+
+  Version: Feb 12A, 2021
+  * Added attribute to track if Entity has been moved or not.
+
+  Version: Feb 11B, 2021
+  * Changed references from dwarves to elves.
+  * Added a new damage attribute.
+
+*/
+
+public class Entity
+{
+    public static final char DEFAULT_APPEARANCE = 'X';
+    public static final char ELF = 'E';
+    public static final char EMPTY = ' ';
+    public static final char ORC = 'O';
+    public static final int DEFAULT_HP = 1;
+    public static final int ORC_DAMAGE = 3;
+    public static final int ELF_DAMAGE = 7;
+    public static final int ORC_HP = 10;
+    public static final int ELF_HP = 15;
+
+    private char appearance;
+    private int hitPoints;
+    private int damage;
+    
+    boolean attacking= false;
+    public Entity()
+    {
+        setAppearance(DEFAULT_APPEARANCE);
+        setHitPoints(DEFAULT_HP);
+    }
+
+    public Entity(char newAppearance)
+    {
+        appearance = newAppearance;
+        hitPoints = DEFAULT_HP;
+        damage = ORC_DAMAGE;
+    }
+
+    public Entity(char newAppearance, int newHitPoints, int newDamage)
+    {
+        setAppearance(newAppearance);
+        setDamage(newDamage);
+        setHitPoints(newHitPoints);
+    }
+   /* public void setAtt(boolean isAttacking) {
+    	attacking = isAttacking;
+    }
+    public boolean getAtt() {
+    	return attacking;
+    }*/
+    public char getAppearance()
+    {
+        return(appearance);
+    }
+
+    public int getDamage()
+    {
+        return(damage);
+    }
+
+    public int getHitPoints()
+    {
+        return(hitPoints);
+    }
+
+    public void setAppearance(char newAppearance)//changed this from private to public to change the entity appearance to ' '
+    {
+        appearance = newAppearance;
+    }
+
+    private void setDamage(int newDamage)
+    {
+        if (newDamage < 1) 
+        {
+            System.out.println("Damage must be 1 or greater");
+        }
+        else
+        {
+            damage = newDamage;
+        }        
+    }
+
+    public void setHitPoints(int newHitPoints)
+    {
+        hitPoints = newHitPoints;
+    }
+
+
+}
+---------------NEW------------------
+public abstract class Entity
+{
+//    public static final char DEFAULT_APPEARANCE = 'X';
+    public static final char EMPTY = ' ';
+//    public static final int DEFAULT_HP = 1;
+
+    private char appearance;
+    private int hitPoints;
+    private int damage;
+
+    private static int orcCounter = 0;
+    private static int elfCounter = 0;
+
+    public Entity(char appearance, int hitPoints, int damage) {
+        this.appearance = appearance;
+        this.hitPoints = hitPoints;
+        this.damage = damage;
+    }
+
+    public abstract void debugAttack(GameStatus status, int tempRow, int tempColumn, int targetRow, int targetColumn, int HP, int HPAfter);
+    public abstract void debugLossConditions(GameStatus status, int entityCounter);
+
+    public char getAppearance()
+    {
+        return(appearance);
+    }
+
+    public int getHitPoints()
+    {
+        return(hitPoints);
+    }
+
+    public void setAppearance(char newAppearance)
+    {
+        appearance = newAppearance;
+    }
+
+    public void setHitPoints(int newHitPoints)
+    {
+        hitPoints = newHitPoints;
+    }
+
+    public int getDamage()
+    {
+        return(damage);
+    }
+
+    public static int getElfCounter() {
+        return elfCounter;
+    }
+
+    public static int getOrcCounter() {
+        return orcCounter;
+    }
+
+    public static void incrementElfCounter(int value) {
+        elfCounter = elfCounter + value;
+    }
+
+    public static void incrementOrcCounter(int value) {
+        orcCounter = orcCounter + value;
+    }
+
+    public static void setElfCounter(int newElfCounter){
+        elfCounter = newElfCounter;
+    }
+
+    public static void setOrcCounter(int newOrcCounter){
+        orcCounter = newOrcCounter;
+    }
+}
+
+public class Elf extends Entity {
+    public static final char ELF = 'E';
+    public static final int ELF_DAMAGE = 7;
+    public static final int ELF_HP = 15;
+
+    public Elf() {
+        super(ELF, ELF_HP, ELF_DAMAGE);
+    }
+
+    @Override
+    public void debugAttack(GameStatus status, int tempRow, int tempColumn, int targetRow, int targetColumn, int HP, int HPAfter) {
+        status.elfAttackDebug(tempRow, tempColumn, targetRow, targetColumn, HP, HPAfter);
+    }
+
+    @Override
+    public void debugLossConditions(GameStatus status, int entityCounter){
+        status.orcLoseDebug(entityCounter);
+    }
+}
+```
+> The same is done what Orc subclass
+
+---
+
+##### Refactor 4:
+> refactor 4 was a number of small refactors such as changing names, removing unsless code 
+> general warning fixing and writing code more consistently
+> This was done across all files. Here are some examples: 
+```
+Name changing:
+    r,c to rows and columns
+    i to location index
+    g to graphics
+
+Removing unused code:
+    public static final int ORCS_WIN = 0;
+    public static final int ELVES_WIN = 1;
+    public static final int DRAW = 2;
+    public static final int CEASE_FIRE = 3;
+    public static final int NOT_OVER = 4;
+    
+Consistent code:
+    if(GameStatus.debugModeOn == false) to
+    if(GameStatus.debugModeOn)
+    
+    if(world.programRunning != false) {
+        timer.start();
+        break;	
+    }else {
+        break;
+    }
+    to 
+    if(world.programRunning != false) {
+        timer.start();
+    }
+    break;
+```
+> And much more
+
+--- 
+
+##### Refactor 5
+> Refactor 5 is simply commenting to explain code 
+> this was mainly done in the world.java file 
+> This just helps with readability and understanding 
+> for example:
+
+```
+// logic for attacking gets health and subtracts the attacking entities damage and sets the new health
+and 
+deathLogic(attackingEntity, index); // check if attacker killed enemy
+victoryLogic(attackingEntity); // check if no enemy remains
+and much more
+```
+
+---
+
+That is all the Refactoring done on the original code
+
+---
+
diff --git a/Assignment_1/README.md b/Assignment_1/README.md
deleted file mode 100644
index 3c54b7d..0000000
--- a/Assignment_1/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# CPSC 501, W25
-### Devon Harstrom, 30132397
-
----
-
-Used code from __ and refactored 
-
-
-Refactor branch 1: De-nesting code in world
-
-refactor branch 2: pulling out methods
-
-refactor branch 3: rearrange classes?
-
-refactor branch 4: new class? for elves and dwarves?
-
-refactor branch last: comments
-
-refactor: _ maybe renaming? or getting rid of temp variables or unused ones
-- 
GitLab


From 4811f4b9cb11f9edeccaf5eb64c0c214f194d5a2 Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Tue, 18 Feb 2025 04:22:23 -0700
Subject: [PATCH 16/17] forgot to re-add these test i made into the git commits
 and never realized but i went thoguh and ran them and everything works fine.
 Just wanted to note as well since this is one of the final pushes I did use
 chatgpt just to figure out how to input something into terminal from code
 since I couldnt figure out how. Other than that its all my code.

---
 Assignment_1/CPSC501A1W25README.md            |  2 +-
 ...efactor_1_test.java => refactorTests.java} | 53 +++++++++++++++++--
 2 files changed, 51 insertions(+), 4 deletions(-)
 rename Assignment_1/refactored_code/assignment3GUI - Classmate's/src/{refactor_1_test.java => refactorTests.java} (73%)

diff --git a/Assignment_1/CPSC501A1W25README.md b/Assignment_1/CPSC501A1W25README.md
index 17538ac..6919c03 100644
--- a/Assignment_1/CPSC501A1W25README.md
+++ b/Assignment_1/CPSC501A1W25README.md
@@ -7,7 +7,7 @@
 > Used code from Ethan McCorquodale a classmate who gave permission to use this old code
 I then refactored it </br>
 All refactoring was tested on: </br>
-Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java
+Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactorTests.java
 which tests the world functions to see if the game runs properly 
 > other testing was done in the GUI outside of code as it is a GUI based coed
 
diff --git a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactorTests.java
similarity index 73%
rename from Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java
rename to Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactorTests.java
index 5583574..2df6806 100644
--- a/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactor_1_test.java	
+++ b/Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactorTests.java	
@@ -4,7 +4,7 @@ import java.io.InputStream;
 import static org.junit.jupiter.api.Assertions.*;
 import org.junit.jupiter.api.*;
 
-class refactor_1_test {
+class refactorTests {
     private static World world;
 
     @BeforeEach
@@ -25,6 +25,7 @@ class refactor_1_test {
     void testBoardInitialization() {
         String simulatedInput = "Assignment_1/original_code/assignment3GUI - Classmate's/src/data.txt";
 //        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
+        // note chatgpt helped with the system.in portion as i wasn't sure how to enter into terminal though code
         InputStream originalSystemInStream = System.in;  // Save the original System.in
         ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
         System.setIn(simulatedInputStream);  // Set System.in to the new input stream
@@ -41,8 +42,20 @@ class refactor_1_test {
 
     @Test
     void sortDeadTest(){
-        // not sure how to test because the comment just says doesn't work as intended??
-        //but works in gui
+        String simulatedInput = "Assignment_1/original_code/assignment3GUI - Classmate's/src/data.txt";
+//        String simulatedInput = "Assignment_1/refactored_code/assignment3GUI - Classmate's/src/attackTest.txt\n";
+        // note chatgpt helped with the system.in portion as i wasn't sure how to enter into terminal though code
+        InputStream originalSystemInStream = System.in;  // Save the original System.in
+        ByteArrayInputStream simulatedInputStream = new ByteArrayInputStream(simulatedInput.getBytes());
+        System.setIn(simulatedInputStream);  // Set System.in to the new input stream
+        world = new World();  // This will call FileInitialization.read() and use the simulated input
+        System.setIn(originalSystemInStream);  // Restore the original System.in
+
+        world.sortDead();
+        assertNull(world.location[world.location.length - 1]);
+        assertNull(world.location[world.location.length - 2]);
+        assertNull(world.location[world.location.length - 20]);
+        System.out.println(world.location[world.location.length - 20]);
     }
 
     @Test
@@ -112,5 +125,39 @@ class refactor_1_test {
 
     }
 
+    @Test
+    void testEntities(){
+        Entity testElfEntity = new Elf();
+        Entity testOrcEntity = new Orc();
+
+        assertNotNull(testElfEntity, "should not be null");
+        assertNotNull(testOrcEntity, "should not be null");
+
+        assertEquals('E', testElfEntity.getAppearance());
+        assertEquals('O', testOrcEntity.getAppearance());
+
+        assertEquals(7, testElfEntity.getDamage());
+        assertEquals(3, testOrcEntity.getDamage());
+
+        assertEquals(15, testElfEntity.getHitPoints());
+        assertEquals(10, testOrcEntity.getHitPoints());
+    }
+
+    @Test
+    void testEntityCounters() {
+        assertEquals(0, Entity.getElfCounter());
+        assertEquals(0, Entity.getOrcCounter());
+
+        Entity.incrementElfCounter(5);
+        Entity.incrementOrcCounter(-1);
 
+        assertEquals(5, Entity.getElfCounter());
+        assertEquals(-1, Entity.getOrcCounter());
+
+        Entity.setElfCounter(0);
+        Entity.setOrcCounter(0);
+
+        assertEquals(0, Entity.getElfCounter());
+        assertEquals(0, Entity.getOrcCounter());
+    }
 }
\ No newline at end of file
-- 
GitLab


From beb2a4a2bc8e2fc8ed200ff34ece82cbf41445ac Mon Sep 17 00:00:00 2001
From: Devon Harstrom <devonharstrom@gmail.com>
Date: Tue, 18 Feb 2025 04:44:24 -0700
Subject: [PATCH 17/17] added to readme pretty much done assignment

---
 Assignment_1/{ => refactored_code}/CPSC501A1W25README.md | 2 ++
 1 file changed, 2 insertions(+)
 rename Assignment_1/{ => refactored_code}/CPSC501A1W25README.md (98%)

diff --git a/Assignment_1/CPSC501A1W25README.md b/Assignment_1/refactored_code/CPSC501A1W25README.md
similarity index 98%
rename from Assignment_1/CPSC501A1W25README.md
rename to Assignment_1/refactored_code/CPSC501A1W25README.md
index 6919c03..29cbcb1 100644
--- a/Assignment_1/CPSC501A1W25README.md
+++ b/Assignment_1/refactored_code/CPSC501A1W25README.md
@@ -6,6 +6,8 @@
 ### Info:
 > Used code from Ethan McCorquodale a classmate who gave permission to use this old code
 I then refactored it </br>
+> The original code is by Ethan McCorquodale. I was given permission to use it: 
+> “... I give you guys (and anyone else who is in the same situation) permission to use this project.” </br>
 All refactoring was tested on: </br>
 Assignment_1/refactored_code/assignment3GUI - Classmate's/src/refactorTests.java
 which tests the world functions to see if the game runs properly 
-- 
GitLab