Questo progetto implementa un server IRC in C++98 con gestione multi-client via socket non bloccanti e select(), piu una modalita gioco integrata chiamata BalatroBot.
Il server espone i comandi IRC principali richiesti per chat private e canali, oltre a una logica custom per avviare una partita testuale di Balatro direttamente tramite messaggi IRC.
- Server TCP IRC con autenticazione iniziale (
PASS,NICK,USER) - Gestione canali con:
- join/part
- topic
- invite
- kick
- mode canale (
+i,+t,+k,+o,+le rispettivi unset)
- Messaggistica privata (
PRIVMSG) verso utenti o canali - Chiusura pulita su
CTRL+C - Minigioco BalatroBot attivabile da client IRC
- Core IRC:
main.cppServer.cppServerLoop.cppServerParsing.cppServerReplyMessage.cppServerErrorMessage.cppChannel.cppUser.cpp
- Header principali:
includes/
- BalatroBot e logica gioco:
BalatroBot/
- Linux o ambiente compatibile POSIX (es. WSL Ubuntu)
- Compilatore C++ con supporto C++98 (es.
c++/g++) make
Dalla root del progetto:
makeViene generato l'eseguibile:
./ircservmake clean
make fclean
make reNel Makefile sono presenti anche:
make test: ricompila e avvia con porta/password di defaultmake valgrind: esecuzione con valgrind
Uso:
./ircserv <port> <password>Esempio:
./ircserv 7272 1234Puoi usare client GUI (HexChat) o CLI (Irssi/WeeChat). Una volta connesso al server, la sequenza minima e:
PASS 1234
NICK tuoNick
USER tuoUser 0 * :Tuo Nome
Se la password e errata, il server rifiuta la sessione.
Comandi gestiti dal parser server:
PASSNICKUSERJOINPRIVMSGPARTINVITEMODETOPICKICKQUIT
Note:
JOINsupporta anche join multipli separati da virgola e password canale.MODEcanale include gestione operatori, invite-only, topic lock, chiave canale e user limit.
Il bot viene associato al tuo utente e risponde via PRIVMSG.
Dal client IRC invia:
balatro
Per ricominciare una nuova partita/round quando richiesto:
/balatro
I comandi del bot passano come messaggi privati a BalatroBot e iniziano con !.
Comandi principali:
!select <id...>: seleziona carte (max 5)!discard: scarta carte selezionate!play: gioca le carte selezionate!sort suit!sort rank!cash out!reroll!next!shop <id...>!replace <id>!pack <1|2>!pick <id>!skip!sell <id...>!swap <id1> <id2>
Suggerimento pratico:
- Avvia round con
balatro - Seleziona carte con
!select - Gioca con
!playo scarta con!discard - A fine round passa dallo shop (
!cash out,!shop,!next)
- Compila:
make- Avvia server:
./ircserv 7272 1234-
Connetti un client IRC a
127.0.0.1:7272 -
Registra utente:
PASS 1234
NICK player1
USER player1 0 * :Player One
- Crea ed entra in un canale:
JOIN #test
- Avvia BalatroBot:
balatro
- Errore bind/listen: controlla che la porta non sia gia occupata.
- Client disconnesso subito: verifica ordine e correttezza di
PASS,NICK,USER. - Nessuna risposta utile da BalatroBot: assicurati di inviare comandi con prefisso
!quando sei in partita.
- Standard compilazione:
-std=c++98 - Warning policy:
-Wall -Wextra -Werror - Il server usa I/O non bloccante e ciclo eventi basato su
select().