Giter Site home page Giter Site logo

blackjack's Introduction

Projet Blackjack en C

Présentation du Projet

Ce projet est une implémentation du jeu de Blackjack en langage C. Il a été développé pour permettre aux joueurs de miser et de jouer contre la banque selon les règles classiques du Blackjack.

Fichiers du Projet

  • src/main.c
  • src/carte.c
  • src/jeu.c
  • src/son.c
  • include/carte.h
  • include/jeu.h
  • include/main.h
  • include/son.h

Compilation du Projet

Utilisation de CMake

Nous avons utilisé CMake pour la gestion de la compilation du projet. Voici le fichier CMakeLists.txt utilisé :

CMakeLists.txt

cmake_minimum_required(VERSION 3.28)
project(blackjack C)

# Définir le standard C
set(CMAKE_C_STANDARD 11)

# Ajouter les options de compilation
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -g -O0")

# Ajouter les répertoires include
include_directories(include)

# Ajouter les fichiers source
set(SOURCES
    src/main.c
    src/carte.c
    src/jeu.c
    src/son.c
)

# Créer l'exécutable
add_executable(blackjack ${SOURCES})

# Ajouter la bibliothèque windows pour la fonction Beep
if(WIN32)
    target_link_libraries(blackjack winmm)
endif()

# Définir une cible pour nettoyer les fichiers objets (utiliser un nom différent)
add_custom_target(distclean
    COMMAND ${CMAKE_COMMAND} -E remove -f src/main.o src/carte.o src/jeu.o src/son.o
    COMMENT "Nettoyage des fichiers objets."
)

Instructions de Compilation avec CMake

  1. Générer les fichiers de build :

    cmake -S . -B build
  2. Compiler le projet :

    cmake --build build

Utilisation de Make

Pour ceux qui préfèrent utiliser un Makefile traditionnel, voici le fichier Makefile utilisé :

Makefile

CC = gcc
CFLAGS = -Wall -Wextra -std=c11 -g -O0 -Iinclude

all: blackjack

blackjack: src/main.o src/carte.o src/jeu.o src/son.o
	$(CC) $(CFLAGS) -o blackjack src/main.o src/carte.o src/jeu.o src/son.o -lwinmm

src/main.o: src/main.c include/main.h include/jeu.h
	$(CC) $(CFLAGS) -c src/main.c -o src/main.o

src/carte.o: src/carte.c include/carte.h
	$(CC) $(CFLAGS) -c src/carte.c -o src/carte.o

src/jeu.o: src/jeu.c include/jeu.h include/carte.h include/son.h
	$(CC) $(CFLAGS) -c src/jeu.c -o src/jeu.o

src/son.o: src/son.c include/son.h
	$(CC) $(CFLAGS) -c src/son.c -o src/son.o

clean:
	del src\*.o blackjack

Instructions de Compilation avec Make

  1. Compiler le projet :

    make
  2. Nettoyer les fichiers objets et l'exécutable :

    make clean

Analyse de la Mémoire

Pourquoi nous n'avons pas utilisé Valgrind

Initialement, nous avons prévu d'utiliser Valgrind pour analyser les fuites de mémoire de notre application. Cependant, après avoir passé beaucoup de temps à essayer de faire fonctionner Valgrind, nous avons découvert que Valgrind n'est pas supporté sous Windows.

Utilisation de Dr. Memory

En remplacement de Valgrind, nous avons utilisé Dr. Memory, un outil de détection de fuites de mémoire et d'erreurs similaire à Valgrind, mais conçu pour fonctionner sous Windows.

Commande pour exécuter Dr. Memory

Pour analyser notre application avec Dr. Memory, nous avons utilisé la commande suivante :

drmemory -- ./blackjack

Résultats de l'Analyse

Lors de l'analyse avec Dr. Memory, nous avons détecté une fuite de mémoire :

~~Dr.M~~ Error #1: UNADDRESSABLE ACCESS beyond top of stack: reading 0x00000076fbdff740-0x00000076fbdff748 8 byte(s)
~~Dr.M~~ # 0 .text
~~Dr.M~~ # 1 _pei386_runtime_relocator
~~Dr.M~~ # 2 __tmainCRTStartup
~~Dr.M~~ # 3 .l_start
~~Dr.M~~ # 4 ntdll.dll!RtlUserThreadStart
~~Dr.M~~ Note: @0:00:00.250 in thread 28968
~~Dr.M~~ Note: 0x00000076fbdff740 refers to 776 byte(s) beyond the top of the stack 0x00000076fbdffa48
~~Dr.M~~ Note: instruction: or     $0x0000000000000000 (%rcx) -> (%rcx)

Nous avons identifié une erreur d'accès mémoire ("UNADDRESSABLE ACCESS beyond top of stack"), mais faute de temps, nous n'avons pas pu approfondir pour identifier précisément l'origine de cette fuite.

Environnements de Développement

  • Gaël a utilisé VSCode avec les configurations de compilation Make.
  • Mathis a utilisé CLion avec les configurations CMake.

blackjack's People

Contributors

barvoziker avatar pexilo avatar

Watchers

Lucian avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.