client

package
v0.0.0-...-b7edc3b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 23, 2020 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package client : fournit une interface simple et efficace pour communiquer avec le serveur du hackathon. Pas besoin de vous embêter avec le réseau ce package s'en charge pour vous.

Le package va automatiquement gérer le réseau et les conditions gagnantes. La structure conseillée est la suivante:

func main() {
  c := client.NewClient()
  err := c.Connect("127.0.0.1:1337", "MonEquipe")
  if err != nil {
    // Traiter l'erreur
  }
  for c.Status() == ONGOING {
    err = c.NextTurn()
    if err != nil {
      // Traiter l'erreur
    }
    if c.Status() != ONGOING {
      break
    }
    // Prendre des descisions...
  }
}

Author: Ares

Index

Constants

View Source
const (
	TOP = iota
	RIGHT
	BOTTOM
	LEFT
)

Directions

View Source
const (
	ONGOING = iota
	VICTORY
	DEFEAT
	CONNECTION_LOST
)

Statuts

Variables

This section is empty.

Functions

This section is empty.

Types

type Cell

type Cell struct {
	Owner int // identifiant numérique du propriétaire
	Power int // Nombre d'unités disponibles
	X     int // Position X
	Y     int // Position Y
}

Cell décrit une cellule du champ de bataille

type Client

type Client struct {
	Name string
	ID   int
	// contains filtered or unexported fields
}

Structure principale pour la gestion du client

func NewClient

func NewClient() *Client

NewClient : Permet d'initialiser une instance d'un client. C'est la première chose à faire avant de pouvoir communiquer avec le serveur.

func (*Client) AddUnit

func (c *Client) AddUnit(cell *Cell) error

AddUnit ajoute une unité sur la cellule passée en paramètre.

Si la fonction renvoie une erreur cela signifie que vous avez dépassé le nombre maximum d'unités.

Le champ de bataille sera mis à jour uniquement après l'appel de la méthode EndAddingUnits.

func (*Client) AddUnits

func (c *Client) AddUnits(cell *Cell, count int) error

AddUnits ajoute count unités sur la cellule passée en paramètre.

Si la fonction renvoie une erreur cela signifie que vous avez dépassé le nombre maximum d'unités.

Le champ de bataille sera mis à jour uniquement après l'appel de la méthode EndAddingUnits.

func (*Client) AddUnitsList

func (c *Client) AddUnitsList(cells []*Cell) error

AddUnitsList ajoute une unité chacune des cellules de la liste passée en paramètre.

Si la fonction renvoie une erreur cela signifie que vous avez dépassé le nombre maximum d'unités.

Le champ de bataille sera mis à jour uniquement après l'appel de la méthode EndAddingUnits.

func (*Client) Attack

func (c *Client) Attack(fromX, fromY, toX, toY int) error

Attack permet de lancer une attaque. fromX et fromY sont les coordonnées de la case qui lance l'attaque et toX et toY sont les coordonnées de la case ciblée par l'attaque.

Attention: Si les 4 valeurs sont égales à 255 cela sera interprété comme la fin des attaques. Si c'est ce que vous voulez faire utilisez plutot la méthode EndAttacks

Si cette méthode renvoie une erreur c'est qu'il y a eu une erreur réseau.

func (*Client) Connect

func (c *Client) Connect(url string, teamName string) error

Connect Se connecte au serveur de jeu. Il envoie le nom de l'équipe et récupère son identifiant numérique.

L'url doit être de la forme IP:PORT.

Exemple :

c := NewClient()
c.Connect("127.0.0.1:1337", "MonEquipe")

Une fois appelée l'id et le nom de l'équipe sont disponibles dans les champs ID et Name de Client.

c.ID // ID De l'équipe
c.Name // Nom de l'équipe

func (*Client) EndAddingUnits

func (c *Client) EndAddingUnits() error

EndAddingUnits termine la phase de placement des unités. Cette fonction va envoyer vos choix au serveur et mettre à jour la map.

Si cette fonction renvoie une erreur c'est qu'il y a eu une erreur réseau

func (*Client) EndAttacks

func (c *Client) EndAttacks() (int, error)

EndAttacks permet de prévenir le serveur que l'on a fini toutes nos attaques. Cette fonction va également attendre le début de la phase de placement et initialiser les champs nécessaires à la phase de placement.

func (*Client) Get

func (c *Client) Get(x, y int) *Cell

Get alias c.GetField().Get()

func (*Client) GetField

func (c *Client) GetField() *Field

GetField renvoie le champ de bataille courant

func (*Client) GetMap

func (c *Client) GetMap() *Field

GetMap alias de GetField

func (*Client) MyCells

func (c *Client) MyCells() []*Cell

MyCells renvoie une liste des cellules qui appartiennent au joueur courant

func (*Client) NextTurn

func (c *Client) NextTurn() error

NextTurn : attends le tour suivant.

Cette fonction va attendre le tour suivant, met à jour la map et calcul si l'on a gagné ou perdu. Il est conseillé de faire un test de status après l'appel à cette fonction.

Si cette fonction renvoit une erreur, c'est qu'il y a eu un problème lors des appels réseau. Il y a de grande chance que l'on ne soit pas en état de continuer.

func (*Client) RemainingUnits

func (c *Client) RemainingUnits() int

RemainingUnits renvoie le nombre d'unités que vous pouvez encore placer pendant ce tour.

func (*Client) Status

func (c *Client) Status() int

Status : renvoie le status actuel du client. Les valeurs possibles sont :

ONGOING // La partie est en cours
DEFEAT // On a perdu
VICTORY // On a gagné
CONNECTION_LOST // La connexion au serveur à été perdue

type Field

type Field struct {
	SizeX int
	SizeY int
	Field [][]*Cell
}

Field décrit le champ de bataille

func (*Field) Get

func (f *Field) Get(x, y int) *Cell

Get permet de récupérer la cellule aux coordonnées x,y. Si les coordonnées sont invalides, alors la fonction renverra nil.

func (*Field) OwnedBy

func (f *Field) OwnedBy(p int) []*Cell

OwnedBy permet de récupérer la liste des cellules appartenant au propriétaire passé en paramètre.

func (*Field) Print

func (f *Field) Print()

Print the board for debuging purposes

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL