+8
.gitignore
+8
.gitignore
···
+68
TOURNAMENT.md
+68
TOURNAMENT.md
···+Tournament-style battleship AI competition with automatic header generation and local compilation.
+452
battleship-engine/src/battle_light.cpp
+452
battleship-engine/src/battle_light.cpp
···+cout << "Win move range: " << stats.minMovesWin.load() << "-" << stats.maxMovesWin.load() << endl;+cout << "Loss move range: " << stats.minMovesLoss.load() << "-" << stats.maxMovesLoss.load() << endl;
+97
battleship-engine/src/battleship.h
+97
battleship-engine/src/battleship.h
···
+317
battleship-engine/src/battleship_light.cpp
+317
battleship-engine/src/battleship_light.cpp
···
+65
battleship-engine/src/battleship_light.h
+65
battleship-engine/src/battleship_light.h
···
+78
battleship-engine/src/kasbs.h
+78
battleship-engine/src/kasbs.h
···
+38
battleship-engine/src/memory.h
+38
battleship-engine/src/memory.h
···
+116
battleship-engine/src/tournament_battle.cpp
+116
battleship-engine/src/tournament_battle.cpp
···
+100
-18
database.go
+100
-18
database.go
······+COUNT(CASE WHEN (m.player1_id = s.id OR m.player2_id = s.id) AND m.winner_id != s.id THEN 1 END) as losses,······+"INSERT INTO matches (player1_id, player2_id, winner_id, player1_moves, player2_moves) VALUES (?, ?, ?, ?, ?)",···-"SELECT id, username, filename, upload_time, status FROM submissions WHERE status = 'pending' ORDER BY upload_time",+"SELECT id, username, filename, upload_time, status FROM submissions WHERE status = 'pending' AND is_active = 1 ORDER BY upload_time",+"SELECT id, username, filename, upload_time, status FROM submissions WHERE is_active = 1 AND status = 'completed' ORDER BY username",···
+67
-2
model.go
+67
-2
model.go
··················
+315
-53
runner.go
+315
-53
runner.go
······+log.Printf("Starting compilation for submission %d: %s by %s", sub.ID, sub.Filename, sub.Username)-log.Printf("Submission %d completed successfully: %s by %s", sub.ID, sub.Filename, sub.Username)+log.Printf("Submission %d compiled successfully: %s by %s", sub.ID, sub.Filename, sub.Username)···+log.Printf("Match result: %s wins (%d-%d, avg %d moves)", newSub.Username, player1Wins, player2Wins, avgMoves)+log.Printf("Match result: %s wins (%d-%d, avg %d moves)", opponent.Username, player2Wins, player1Wins, avgMoves)+log.Printf("Match result: Tie %d-%d, winner by coin flip: %d", player1Wins, player2Wins, winnerID)+mainPath := filepath.Join(enginePath, "src", fmt.Sprintf("match_%s_vs_%s.cpp", prefix1, prefix2))
+7
scp.go
+7
scp.go
···
-30
scripts/test-submission.sh
-30
scripts/test-submission.sh
···
+128
scripts/test-submissions/memory_functions_hunter.cpp
+128
scripts/test-submissions/memory_functions_hunter.cpp
···
+59
scripts/test-submissions/memory_functions_random.cpp
+59
scripts/test-submissions/memory_functions_random.cpp
···
+70
scripts/test-upload.sh
+70
scripts/test-upload.sh
···+cp /Users/kierank/code/school/cs1210-battleship/src/memory_functions_klukas.cpp "$SCRIPT_DIR/test-submissions/"+scp -P $PORT "$SCRIPT_DIR/test-submissions/memory_functions_random.cpp" "alice@$HOST:~/memory_functions_random.cpp"+scp -P $PORT "$SCRIPT_DIR/test-submissions/memory_functions_hunter.cpp" "bob@$HOST:~/memory_functions_hunter.cpp"+scp -P $PORT "$SCRIPT_DIR/test-submissions/memory_functions_klukas.cpp" "charlie@$HOST:~/memory_functions_klukas.cpp"
+6
sftp.go
+6
sftp.go
···