Skip to content

ByteKata08/NumbersGame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎮 NumbersGame

Language Database Protocol Status

Una implementación robusta de comunicación cliente-servidor utilizando sockets TCP puros y persistencia de datos.


📖 Sobre el Proyecto

NumbersGame es un proyecto diseñado para demostrar el manejo eficiente de conexiones de red de bajo nivel. El sistema permite la interacción entre múltiples clientes y un servidor centralizado, gestionando el flujo de datos (números) y almacenando los resultados de las sesiones en una base de datos ligera.

El objetivo principal es la práctica de protocolos TCP, el manejo de memoria dinámica en C y la integración con SQL.


🚀 Características Principales

  • 🔌 Conexión TCP Persistente: Comunicación fiable y ordenada entre nodos.
  • 💾 Persistencia de Datos: Integración con SQLite3 para guardar puntuaciones/registros.
  • ⚡ Rendimiento Puro: Escrito 100% en C estándar (C99/C11) sin frameworks pesados.
  • 🧵 Manejo de Concurrencia: Capacidad para atender peticiones (usando fork() o hilos, según tu implementación).

🛠️ Tecnologías Utilizadas

Tecnología Descripción Uso en el proyecto
C Standard Lenguaje Principal Lógica del servidor, cliente y gestión de memoria.
SQLite3 Base de Datos Almacenamiento de logs, usuarios o puntuaciones.
TCP/IP Protocolo de Red Transporte de paquetes de datos.
Make Build System Automatización de la compilación.

📋 Pre-requisitos

Antes de ejecutar el proyecto, asegúrate de tener instalado el compilador y las librerías de SQLite.

Linux (Debian/Ubuntu)

sudo apt update
sudo apt install build-essential libsqlite3-dev

Clonar repositorio

git clone https://github.com/ByteKata08/NumbersGame.git
cd NumbersGame

Ejemplo de compilación manual

gcc Servidor.c Game.c -o server -lsqlite3
gcc Cliente.c -o client

Compilación con makefile(Recomendado)

make

1.Levanta el servidor

./server

2.Conecta 2 o más clientes

./client

3.Guía de Comandos y Ejemplo de Uso

Autenticación

El servidor te indicará qué paso sigue.

Paso 1: Identificación

> USUARIO jason
< +Ok. Usuario correcto. Usa PASSWORD <password>

Paso 2: Contraseña

> PASSWORD 1234
< +Ok. Usuario validado

Nota: Si no tienes cuenta, usa REGISTRO -u -p para crearla.

Paso 3: Iniciar partida

> INICIAR-PARTIDA
< +Ok. Esperando a que se conecte otro jugador.
... (cuando se conecta el segundo jugador) ...
< +Ok. Empieza la partida. NÚMERO OBJETIVO: 145
< +Ok. Es el turno de jason

Tirar-DADOS

> TIRAR-DADOS 1 (o TIRAR-DADOS 2)
< +Ok. Tu puntuación actual es de 5 puntos.
< +Ok. Ahora es el turno de Pedro

< Ok. El oponente ha sacado: [<DADO 1>, <4>]
< +Ok. La puntuación actual de tu oponente es de 4 puntos.
< +Ok. Ahora es tu turno.

Plantarse

> PLANTARME
< +Ok. Esperando a que finalice el otro jugador.
...
< +Ok. Tu puntuacion es 140, y la de tu oponente es 138 has ganado!

Tabla de Comandos Disponibles

Comando Parámetros Descripción
REGISTRO -u <usuario> -p <pass> Crea un usuario nuevo en la base de datos.
USUARIO <nombre_usuario> Primer paso para iniciar sesión.
PASSWORD <contraseña> Segundo paso para validar tu identidad.
INICIAR-PARTIDA -ninguno- Te pone en cola para buscar un oponente y empezar.
TIRAR-DADOS 1 Lanza un solo dado (suma 1-6 puntos).
TIRAR-DADOS 2 Lanza dos dados (suma 2-12 puntos).
NO-TIRAR-DADOS -ninguno- Pasas tu turno sin sumar puntos (Máximo 3 veces).
PLANTARME -ninguno- Te retiras con tus puntos actuales y esperas el final.
SALIR -ninguno- Cierra la conexión con el servidor de forma segura.

About

Practice of network communication using TCP type protocols.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •