比較提交

...

11 次程式碼提交

作者 SHA1 備註 日期
vaisse
87487bde84 mince 2025-10-08 17:25:49 +02:00
c650075e86 Merge pull request 'add src' (#6) from kara-mosr into master
Reviewed-on: #6
2025-10-08 16:12:24 +02:00
728b639857 add src 2025-10-08 16:11:15 +02:00
6ea2416f9c Merge pull request 'ajout srckaramosr' (#4) from kara-mosr into master
Reviewed-on: #4
2025-10-08 14:33:55 +02:00
da870af20f ajout srckaramosr 2025-10-08 14:33:07 +02:00
dbcbaa124e Merge pull request 'c'est bon pour de vrai cette fois-ci, je promets' (#3) from vaisse into master
Reviewed-on: #3
2025-10-08 14:31:59 +02:00
919959dc39 Merge pull request 'kara-mosr' (#2) from kara-mosr into master
Reviewed-on: #2
Reviewed-by: Alistair VAISSE <alistair.vaisse@etu.u-pec.fr>
2025-10-08 14:24:52 +02:00
3e4bcf3b52 Merge pull request 'vaisse' (#1) from vaisse into master
Reviewed-on: #1
2025-10-08 14:24:49 +02:00
804709b1e0 add src_karamosr 2025-10-08 14:18:02 +02:00
8830171c87 add src-karamosr 2025-10-08 11:43:05 +02:00
d460f09e6f add toto 2025-10-08 11:41:23 +02:00
共有 13 個檔案被更改,包括 558 行新增2 行删除

二進制
a.out 可執行檔

未顯示二進位檔案。

查看文件

@@ -3,7 +3,7 @@
#include <time.h>
/*
récupère le nombre de lignes dans la banque de mots
*/
int getFileLength(){
/*variables*/
@@ -28,7 +28,7 @@ int getFileLength(){
}
/*
récupère un mot aléatoire dans la banque de mots
*/
int fetchWord(char* fullword, int file_length){
/*variables*/

80
interface.c 一般檔案
查看文件

@@ -0,0 +1,80 @@
#include <stdlib.h>
#include <stdio.h>
#include <graph.h>
#define WINDOW_HEIGTH 500
#define WINDOW_WIDTH 500
/*
Contient l'ensemble des informations essentiels d'un bouton
*/
typedef struct {
int x;
int y;
int length;
int heigth;
char* text;
unsigned short int r;
unsigned short int g;
unsigned short int b;
} Button;
/*
Ouvre la fenêtre. Permet au jeu de démarer.
*/
void STARTGAMe(){
InitialiserGraphique();
CreerFenetre(10, 10, WINDOW_HEIGTH, WINDOW_WIDTH);
}
/*
Vérifie si le curseur est placée dans un bouton. Renvoi 0 si oui. Renvoi -1 sinon.
*/
int inButton(Button* b){
int minimum_x = b->x;
int minimum_y = b->y;
int maximum_x = (b->x) + (b->length);
int maximum_y = (b->y) + (b->heigth);
if((_X>=minimum_x)&&(_X<=maximum_x)&&(_Y>=minimum_y)&&(_Y<=maximum_y)){
return 0;
} else {
return -1;
}
}
/*
Dessine un bouton sur l'écran
*/
void drawButton(Button* b){
ChoisirCouleurDessin(CouleurParComposante(b->r,b->g,b->b));
RemplirRectangle(b->x, b->y, b->length, b->heigth);
ChoisirCouleurDessin(CouleurParNom("white"));
EcrireTexte((b->x)+20, (b->y)+20, b->text, (b->heigth)/2);
}
/*
Affiche le menu
*/
void setMenu(){
/*éléments*/
Button easy = {WINDOW_WIDTH*(1-0.75), WINDOW_HEIGTH*(1-0.75), WINDOW_WIDTH/8, WINDOW_HEIGTH/10, "facile", 148, 225, 224};
Button medium = {WINDOW_WIDTH*(1-0.50), WINDOW_HEIGTH*(1-0.75), WINDOW_WIDTH/8, WINDOW_HEIGTH/10, "moyen", 148, 225, 224};
Button hard = {WINDOW_WIDTH*(1-0.25), WINDOW_HEIGTH*(1-0.75), WINDOW_WIDTH/8, WINDOW_HEIGTH/10, "difficile", 148, 225, 224};
/*dessin*/
ChoisirCouleurDessin(CouleurParNom("black"));
EcrireTexte(WINDOW_WIDTH/2, WINDOW_HEIGTH/2, "PENDU", WINDOW_WIDTH/10);
drawButton(&easy);
drawButton(&medium);
drawButton(&hard);
}
int main(void){
STARTGAMe();
setMenu();
Touche();
FermerGraphique();
return EXIT_SUCCESS;
}

二進制
src/a.out 可執行檔

未顯示二進位檔案。

100
src/facile.txt 一般檔案
查看文件

@@ -0,0 +1,100 @@
ARBRE
LIVRE
POMME
CHAIR
TABLE
CHIEN
CHAT
VACHE
CHEVAL
PORTE
MUR
TOIT
LUNE
SOLEIL
MARE
NEIGE
GLACE
FLEUR
ROSE
BLEUET
ORANGE
BANANE
TOMATE
CITRON
PAPAYE
RAISIN
MANGUE
CERISE
OLIVE
PIMENT
SUCRE
SEL
POIVRE
MOUTON
COQ
POULE
LAPIN
AIGLE
TIGRE
LION
ZEBRE
SINGE
PANDA
KOALA
RENARD
OURS
CRABE
POISSON
REKIN
DAUPHIN
BALEINE
PLUIE
VENT
FEU
TERRE
NUAGE
ORAGE
PENTE
MER
RIVAGE
RIVIERE
ETANG
PLAINE
COLLINE
VALLEE
ROCHER
SABLE
PRAIRIE
BOIS
FORET
GIVRE
CAVERNE
CERCLE
ANGLE
CARRE
CUBE
SPHERE
POINT
TRAIT
CHEMIN
ROUTE
RUE
VILLE
VILLAGE
PAYS
MONDE
ETOILE
GALAXIE
COSMOS
TEMPLE
CHAPELLE
JARDIN
FLECHE
ECUREUIL
COUSIN
AMIS
ENNEMI
VILAIN
COQUIN
VOYOU

49
src/functions.c 一般檔案
查看文件

@@ -0,0 +1,49 @@
#include "functions.h"
#include <stdio.h>
#include <string.h>
char choose_letter() {
char letter;
printf("Entrez une lettre : ");
scanf(" %c", &letter);
printf("Vous avez choisi la lettre '%c'\n", letter);
return letter;
}
int word_size(const char *fullWord) {
int size = 0;
while (fullWord[size] != '\0') {
size++;
}
return size;
}
int letter_occurrence(char letter, const char *fullWord) {
int wordsize = word_size(fullWord);
int letterOccurrence = 0;
for (int i = 0; i < wordsize; i++) {
if (fullWord[i] == letter) {
letterOccurrence++;
}
}
if (letterOccurrence == 0) {
printf("La lettre '%c' n'apparait pas dans le mot.\n", letter);
}
return letterOccurrence;
}
void position_letter(char letter, const char *fullWord, char *partialWord) {
int wordsize = word_size(fullWord);
for (int i = 0; i < wordsize; i++) {
if (fullWord[i] == letter) {
partialWord[i] = letter;
}
}
}
int has_won(const char *fullWord, const char *partialWord) {
return strcmp(fullWord, partialWord) == 0;
}

12
src/functions.h 一般檔案
查看文件

@@ -0,0 +1,12 @@
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#define LIFES 8
char choose_letter();
int word_size(const char *fullWord);
int letter_occurrence(char letter, const char *fullWord);
void position_letter(char letter, const char *fullWord, char *partialWord);
int has_won(const char *fullWord, const char *partialWord);
#endif

44
src/getfuncs.c 一般檔案
查看文件

@@ -0,0 +1,44 @@
#include "getfuncs.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int getFileLength(const char *filename) {
FILE* stream = fopen(filename, "r");
if (!stream) return -1;
int file_length = 0;
char buffer[128];
while (fgets(buffer, sizeof(buffer), stream)) {
file_length++;
}
fclose(stream);
return file_length;
}
int fetchWord(const char *filename, char *fullWord, int file_length) {
if (file_length <= 0) return -1;
srand(time(NULL));
int random_line = rand() % file_length;
FILE* stream = fopen(filename, "r");
if (!stream) return -1;
int current = 0;
while (fgets(fullWord, 128, stream)) {
if (current == random_line) {
// Retirer le '\n' si présent
char *newline = strchr(fullWord, '\n');
if (newline) *newline = '\0';
fclose(stream);
return 0;
}
current++;
}
fclose(stream);
return -1;
}

7
src/getfuncs.h 一般檔案
查看文件

@@ -0,0 +1,7 @@
#ifndef GETFUNCS_H
#define GETFUNCS_H
int getFileLength(const char *filename);
int fetchWord(const char *filename, char *fullWord, int file_length);
#endif

61
src/main.c 一般檔案
查看文件

@@ -0,0 +1,61 @@
#include <stdio.h>
#include <string.h>
#include "functions.h"
#include "getfuncs.h"
void play_game(const char *filename) {
char fullWord[128];
int flength = getFileLength(filename);
if (fetchWord(filename, fullWord, flength) != 0) {
printf("Erreur de lecture du fichier.\n");
return;
}
int size = word_size(fullWord);
char partialWord[size + 1];
for (int i = 0; i < size; i++) partialWord[i] = '_';
partialWord[size] = '\0';
int lifes = LIFES;
int won = 0;
printf("Le mot a deviner contient %d lettres.\n", size);
while (lifes > 0 && !won) {
printf("\nMot actuel : %s\nVies restantes : %d\n", partialWord, lifes);
char letter = choose_letter();
int occurrence = letter_occurrence(letter, fullWord);
if (occurrence > 0) {
position_letter(letter, fullWord, partialWord);
} else {
lifes--;
}
if (has_won(fullWord, partialWord)) won = 1;
}
if (won) printf("\nFelicitations ! Vous avez trouve le mot : %s\n", fullWord);
else printf("\nVous avez perdu ! Le mot etait : %s\n", fullWord);
}
void play_hard_mode() {
printf("Mode difficile : vous devez deviner deux mots !\n");
play_game("facile.txt");
play_game("moyen.txt");
}
int main() {
int choice;
printf("Choisissez le mode :\n1 - Facile\n2 - Moyen\n3 - Difficile\n> ");
scanf("%d", &choice);
switch(choice) {
case 1: play_game("facile.txt"); break;
case 2: play_game("moyen.txt"); break;
case 3: play_hard_mode(); break;
default: printf("Mode invalide.\n");
}
return 0;
}

100
src/moyen.txt 一般檔案
查看文件

@@ -0,0 +1,100 @@
ORDINATEUR
PROGRAMME
TELEPHONE
CARNETAGE
UNIVERSITE
HABITATION
BIBLIOTHEQUE
MICROPHONE
NAVIGATEUR
CONDUCTEUR
VOYAGEURS
CONSTRUCTEUR
CHOCOLATERIE
APPARTEMENT
RESTAURANT
IMPRIMERIE
MOUSTACHES
CAMPAGNARD
INVENTAIRE
EXPLORATEUR
COMPAGNON
MATHEMATICS
ASTRONAUTE
ARCHITECTE
MECANICIEN
CHIRURGIEN
ELEPHANTES
HOSPITALES
MONTAGNES
DESERTIQUE
HUMANISME
TROUBADOUR
VOYAGEUSES
CROCODILES
DINOSAURES
HERISSONNE
CULTIVATEUR
PLANTATION
CROISSANCE
DECORATION
TRADITION
ORGANISATEUR
DEVELOPPEUR
INFORMATIQUE
AUTOROUTES
CARTOGRAPHIE
GEOGRAPHIE
HISTORIQUE
LUMINOSITE
TRANSPORTEUR
NAVIGATIONS
IMAGINATION
CITADINITE
POPULATION
MARCHANDISE
ECOLOGISTE
BOTANISTES
ZOOLOGIQUE
HARMONIEUX
MEDITATION
RESISTANCE
INSPIRATION
INNOVATION
CONDITION
SUPERVISEUR
SPECTATEURS
ILLUMINATION
PLATEFORME
PERSPECTIVE
CALCULATEUR
OBSERVATEUR
ALGORITHME
EDUCATEURS
SOUVERAINE
PARLEMENTS
MINISTREES
ACROBATIES
MUSICIENNE
DIRECTION
HORIZONTAL
VERTICALES
REVOLUTION
SCIENTIFIQUE
EXPERIENCE
CONNAISSANCE
LABORATOIRE
ELECTRICIEN
MAGNIFIQUE
COLLECTEURS
DETERMINANT
FASCINANTS
HABITUATION
DISPERSION
FRATERNITE
INTEGRITES
RESPONSABLE
DEPLACEMENT
CONCUBINE
EPHEMERE
SALOPARD

二進制
src/pendu 可執行檔

未顯示二進位檔案。

103
src_karamosr/karamosr.c 一般檔案
查看文件

@@ -0,0 +1,103 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LIFES 8 // Nombre de vies au debut du jeu
// Fonction pour lire une lettre proposee par le joueur
char choose_letter() {
char letter;
printf("Entrez une lettre : ");
scanf(" %c", &letter); // Le " " avant %c evite de lire un retour chariot
printf("Vous avez choisi la lettre '%c'\n", letter);
return letter;
}
// Fonction pour calculer la taille d'une chaine (similaire a strlen)
int word_size(const char *fullWord) {
int size = 0;
while (fullWord[size] != '\0') {
size++;
}
return size;
}
// Verifie combien de fois la lettre apparait dans fullWord
int letter_occurrence(char letter, const char *fullWord) {
int wordsize = wor_size(fullWord);
int letterOccurrence = 0;
for (int i = 0; i < wordsize; i++) {
if (fullWord[i] == letter) { // == pour comparer
letterOccurrence++;
}
}
if (letterOccurrence == 0) {
printf("La lettre '%c' n'apparait pas dans le mot.\n", letter);
}
return letterOccurrence;
}
// Remplace les '_' par la lettre trouvee dans partialWord
void position_letter(char letter, const char *fullWord, char *partialWord) {
int wordsize = word_size(fullWord);
for (int i = 0; i < wordsize; i++) {
if (fullWord[i] == letter) {
partialWord[i] = letter;
}
}
}
// Verifie si le joueur a gagne (si partialWord == fullWord)
int has_won(const char *fullWord, const char *partialWord) {
return strcmp(fullWord, partialWord) == 0; // 1 si egal, 0 sinon
}
int main() {
char fullWord[] = "ordinateur"; // Le mot a deviner
int size = word_size(fullWord);
char partialWord[size + 1]; // +1 pour le '\0'
// Initialiser partialWord avec des '_'
for (int i = 0; i < size; i++) {
partialWord[i] = '_';
}
partialWord[size] = '\0';
int lifes = LIFES;
int won = 0;
printf("Bienvenue au jeu du pendu !\n");
printf("Le mot a deviner contient %d lettres.\n", size);
while (lifes > 0 && !won) {
printf("\nMot actuel : %s\n", partialWord);
printf("Vies restantes : %d\n", lifes);
char letter = choose_letter();
int occurrence = letter_occurrence(letter, fullWord);
if (occurrence > 0) {
position_letter(letter, fullWord, partialWord);
} else {
lifes--;
}
if (has_won(fullWord, partialWord)) {
won = 1;
}
}
if (won) {
printf("\n Felicitations ! Vous avez trouve le mot : %s\n", fullWord);
} else {
printf("\n Vous avez perdu ! Le mot etait : %s\n", fullWord);
}
return 0;
}