Lundi 22 mai 2006
Afin de comprendre comment est codé le jeu (bientôt je mettrais les fichiers sources quelquepart), il faut comprendre comment je l'ai organisé :
Les joueurs inscrits peuvent jouer contre d'autres joueurs, et faire plusieurs parties à la fois, une partie à l'avenir pourra avoir plus de deux joueurs, il faut séparer les objets "joueur_inscrit", "partie_de_jeu" et "participant_a_une_partie".
Les noms des tables sont donc :
joueurs
confrontations
participants
J'ai évidemment créé les modèles de classes correspondantes.
Pour relier ces tables là, j'utilise les déclarations has_many, belongs_to et has_and_belongs_to_many de la sorte :
3 et 4 forment une dépendance n vers n (has_and_belongs_to_many).
class Confrontation < ActiveRecord::Base
has_and_belongs_to_many :joueurs
has_many :participants
end
class Joueur < ActiveRecord::Base
has_and_belongs_to_many :confrontations
has_many :participants
end
class Participant < ActiveRecord::Base
belongs_to :confrontation
belongs_to :joueur
end
Du côté mysql, j'ai opté pour un fichier create.sql (méthode utilisée dans le livre ruby on rails).
Les lignes intéressantes sont :
create table participants (
id int not null auto_increment,
joueur_id int not null,
confrontation_id int not null,
constraint fk_confrontation foreign key (confrontation_id) references confrontations(id),
constraint fk_joueur foreign key (joueur_id) references joueurs(id),
primary key (id)
);
où l'on voit apparaître les lignes "joueur_id" et "confrontation_id"
Ainsi que la table de jointure permettant à rails de faire la passerelle entre les joueurs et les confrontation :
create table confrontations_joueurs (
confrontation_id int not null,
joueur_id int not null,
constraint fk_cp_confrontation foreign key (confrontation_id) references confrontations(id),
constraint fk_cp_joueur foreign key (joueur_id) references joueurs(id),
);
Les joueurs inscrits peuvent jouer contre d'autres joueurs, et faire plusieurs parties à la fois, une partie à l'avenir pourra avoir plus de deux joueurs, il faut séparer les objets "joueur_inscrit", "partie_de_jeu" et "participant_a_une_partie".
Les noms des tables sont donc :
joueurs
confrontations
participants
J'ai évidemment créé les modèles de classes correspondantes.
Pour relier ces tables là, j'utilise les déclarations has_many, belongs_to et has_and_belongs_to_many de la sorte :
- Un joueur a plusieurs participants.
- Une confrontation a plusieurs participants.
- Une confrontation a plusieurs joueurs.
- Un joueur a plusieurs participants.
3 et 4 forment une dépendance n vers n (has_and_belongs_to_many).
class Confrontation < ActiveRecord::Base
has_and_belongs_to_many :joueurs
has_many :participants
end
class Joueur < ActiveRecord::Base
has_and_belongs_to_many :confrontations
has_many :participants
end
class Participant < ActiveRecord::Base
belongs_to :confrontation
belongs_to :joueur
end
Du côté mysql, j'ai opté pour un fichier create.sql (méthode utilisée dans le livre ruby on rails).
Les lignes intéressantes sont :
create table participants (
id int not null auto_increment,
joueur_id int not null,
confrontation_id int not null,
constraint fk_confrontation foreign key (confrontation_id) references confrontations(id),
constraint fk_joueur foreign key (joueur_id) references joueurs(id),
primary key (id)
);
où l'on voit apparaître les lignes "joueur_id" et "confrontation_id"
Ainsi que la table de jointure permettant à rails de faire la passerelle entre les joueurs et les confrontation :
create table confrontations_joueurs (
confrontation_id int not null,
joueur_id int not null,
constraint fk_cp_confrontation foreign key (confrontation_id) references confrontations(id),
constraint fk_cp_joueur foreign key (joueur_id) references joueurs(id),
);
