Browse Source
Merge branch 'fdai7492' into 'main'
Merge branch 'fdai7492' into 'main'
Projekt überarbeitung See merge request fdai7834/taktikmeister!1remotes/origin/Läufer-fertig,-Hendrik-Voß
fdai7492
11 months ago
38 changed files with 282 additions and 1241 deletions
-
7.vscode/launch.json
-
58Plan.md
-
3build/test/cache/defines_dependency.yml
-
242build/test/cache/input.yml
-
257build/test/cache/test_schach.c
-
6build/test/dependencies/cmock.d
-
0build/test/dependencies/force_build
-
1build/test/dependencies/schach.d
-
4build/test/dependencies/test_schach.d
-
4build/test/dependencies/test_schach_runner.d
-
4build/test/dependencies/unity.d
-
BINbuild/test/out/c/cmock.o
-
BINbuild/test/out/c/schach.o
-
BINbuild/test/out/c/test_schach.o
-
BINbuild/test/out/c/test_schach_runner.o
-
BINbuild/test/out/c/unity.o
-
BINbuild/test/out/test_schach.out
-
257build/test/preprocess/files/test_schach.c
-
3build/test/preprocess/includes/test_schach.c
-
34build/test/results/test_schach.pass
-
89build/test/runners/test_schach_runner.c
-
32src/Input.c
-
6src/Input.h
-
17src/Moving.c
-
10src/Moving.h
-
68src/Schachbrett.c
-
8src/Schachbrett.h
-
9src/Spieler.h
-
4src/main.c
-
9src/main.h
-
195src/schach.c
-
BINsrc/schach.exe
-
15src/schach.h
-
2team.md
-
1temp_input.txt
-
45test/test_Input.c
-
26test/test_Schachbrett.c
-
107test/test_schach.c
@ -1,7 +0,0 @@ |
|||||
{ |
|
||||
// Use IntelliSense to learn about possible attributes. |
|
||||
// Hover to view descriptions of existing attributes. |
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 |
|
||||
"version": "0.2.0", |
|
||||
"configurations": [] |
|
||||
} |
|
@ -0,0 +1,58 @@ |
|||||
|
## Spielablauf: |
||||
|
|
||||
|
1. Ausgabe vom Spielfeld |
||||
|
|
||||
|
2. Weiß nach Figur für Zug fragen |
||||
|
|
||||
|
3. Weiß nach Ziel der Figur fragen |
||||
|
|
||||
|
4. Überprüfen ob Eingabe möglich ist |
||||
|
|
||||
|
4.1. falls nicht Schritt 2,3 und 4 Wiederholen |
||||
|
|
||||
|
4.2. Schach überprüfen bzw Schachmatt |
||||
|
|
||||
|
5. Figur bewegen |
||||
|
|
||||
|
5.1. falls gegnerische Figur -> Schlagen |
||||
|
|
||||
|
6. Wiederholung von 1-5 für Schwarz |
||||
|
|
||||
|
|
||||
|
|
||||
|
## Programmablauf: |
||||
|
|
||||
|
1. Spielfeld in der create_Schachfeld erstellen |
||||
|
|
||||
|
1.1 Schachfeld füllen |
||||
|
|
||||
|
2. Spielfeld anzeigen mit print_Schachfeld |
||||
|
|
||||
|
3. Eingabe mit choose_Figur |
||||
|
|
||||
|
3.1 erst x dann y |
||||
|
|
||||
|
4. Eingabe mit choose_destination_Figur |
||||
|
|
||||
|
4.1 erst x dann y |
||||
|
|
||||
|
5. Überprüfung der Figur mit check_Figur |
||||
|
|
||||
|
5.1.bsp.: Eingabe choose_Figur x=0 y=0 temp. char welcher die eingabe des Spielfeldarray an der Stelle 0 0 speichert |
||||
|
|
||||
|
5.2. if abfrage welche Figur da steht |
||||
|
|
||||
|
5.2.1. wechsel in die seperaten Figuren-Funktionen(Datein) |
||||
|
|
||||
|
5.3. Prüfen ob schwarz oder weiß durch groß und kleinschreibung |
||||
|
|
||||
|
6. In den seperaten Figuren-Funktionen wird überprüft ob der Zug möglich ist |
||||
|
|
||||
|
6.1 wenn möglich wird die Figur an die stelle gesetzt |
||||
|
|
||||
|
6.2 wenn es nicht möglich ist dann wird Schritt 2-6 wiederholt |
||||
|
|
||||
|
7.(Schachmatt wird in check_checkmate überprüft) |
||||
|
|
||||
|
8.Schritt 2-8 wird Wiederholt |
||||
|
|
@ -1,3 +0,0 @@ |
|||||
--- |
|
||||
src/schach.c: |
|
||||
- TEST |
|
@ -1,242 +0,0 @@ |
|||||
--- |
|
||||
:project: |
|
||||
:use_exceptions: false |
|
||||
:use_mocks: true |
|
||||
:compile_threads: 1 |
|
||||
:test_threads: 1 |
|
||||
:use_test_preprocessor: true |
|
||||
:use_preprocessor_directives: false |
|
||||
:use_deep_dependencies: false |
|
||||
:generate_deep_dependencies: true |
|
||||
:auto_link_deep_dependencies: false |
|
||||
:test_file_prefix: test_ |
|
||||
:options_paths: [] |
|
||||
:release_build: false |
|
||||
:use_auxiliary_dependencies: true |
|
||||
:build_root: build |
|
||||
:which_ceedling: gem |
|
||||
:ceedling_version: 0.31.1 |
|
||||
:default_tasks: |
|
||||
- test:all |
|
||||
:release_build: |
|
||||
:use_assembly: false |
|
||||
:artifacts: [] |
|
||||
:paths: |
|
||||
:test: |
|
||||
- "+:test/**" |
|
||||
- "-:test/support" |
|
||||
:source: |
|
||||
- src/** |
|
||||
:support: |
|
||||
- test/support |
|
||||
:include: [] |
|
||||
:libraries: [] |
|
||||
:test_toolchain_include: [] |
|
||||
:release_toolchain_include: [] |
|
||||
:files: |
|
||||
:test: [] |
|
||||
:source: [] |
|
||||
:assembly: [] |
|
||||
:support: [] |
|
||||
:include: [] |
|
||||
:environment: |
|
||||
- :rake_columns: '120' |
|
||||
:defines: |
|
||||
:test: |
|
||||
- &1 [] |
|
||||
- TEST |
|
||||
:test_preprocess: |
|
||||
- *1 |
|
||||
- TEST |
|
||||
:release: [] |
|
||||
:release_preprocess: [] |
|
||||
:use_test_definition: false |
|
||||
:common: [] |
|
||||
:libraries: |
|
||||
:flag: "-l${1}" |
|
||||
:path_flag: "-L ${1}" |
|
||||
:test: [] |
|
||||
:test_preprocess: [] |
|
||||
:release: [] |
|
||||
:release_preprocess: [] |
|
||||
:placement: :end |
|
||||
:system: [] |
|
||||
:flags: {} |
|
||||
:extension: |
|
||||
:header: ".h" |
|
||||
:source: ".c" |
|
||||
:assembly: ".s" |
|
||||
:object: ".o" |
|
||||
:libraries: |
|
||||
- ".a" |
|
||||
- ".so" |
|
||||
:executable: ".out" |
|
||||
:map: ".map" |
|
||||
:list: ".lst" |
|
||||
:testpass: ".pass" |
|
||||
:testfail: ".fail" |
|
||||
:dependencies: ".d" |
|
||||
:unity: |
|
||||
:vendor_path: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor |
|
||||
:defines: [] |
|
||||
:cmock: |
|
||||
:vendor_path: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor |
|
||||
:defines: [] |
|
||||
:includes: [] |
|
||||
:mock_prefix: mock_ |
|
||||
:when_no_prototypes: :warn |
|
||||
:enforce_strict_ordering: true |
|
||||
:plugins: |
|
||||
- :ignore |
|
||||
- :callback |
|
||||
:treat_as: |
|
||||
uint8: HEX8 |
|
||||
uint16: HEX16 |
|
||||
uint32: UINT32 |
|
||||
int8: INT8 |
|
||||
bool: UINT8 |
|
||||
:mock_path: build/test/mocks |
|
||||
:verbosity: 3 |
|
||||
:unity_helper: false |
|
||||
:cexception: |
|
||||
:vendor_path: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor |
|
||||
:defines: [] |
|
||||
:test_runner: |
|
||||
:includes: [] |
|
||||
:file_suffix: _runner |
|
||||
:tools: |
|
||||
:test_compiler: |
|
||||
:executable: gcc.exe |
|
||||
:name: default_test_compiler |
|
||||
:stderr_redirect: :none |
|
||||
:background_exec: :none |
|
||||
:optional: false |
|
||||
:arguments: |
|
||||
- '' |
|
||||
- '' |
|
||||
- -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR |
|
||||
- -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE |
|
||||
- "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR |
|
||||
- "-DGNU_COMPILER" |
|
||||
- "-g" |
|
||||
- '' |
|
||||
- -c "${1}" |
|
||||
- -o "${2}" |
|
||||
- "-MMD" |
|
||||
- -MF "${4}" |
|
||||
:test_fixture: |
|
||||
:executable: "${1}" |
|
||||
:name: default_test_fixture |
|
||||
:stderr_redirect: :auto |
|
||||
:background_exec: :none |
|
||||
:optional: false |
|
||||
:arguments: [] |
|
||||
:test_linker: |
|
||||
:executable: gcc.exe |
|
||||
:name: default_test_linker |
|
||||
:stderr_redirect: :none |
|
||||
:background_exec: :none |
|
||||
:optional: false |
|
||||
:arguments: |
|
||||
- '' |
|
||||
- '' |
|
||||
- '' |
|
||||
- '"${1}"' |
|
||||
- "${5}" |
|
||||
- -o "${2}" |
|
||||
- '' |
|
||||
- "${4}" |
|
||||
- '' |
|
||||
:test_file_preprocessor: |
|
||||
:executable: gcc.exe |
|
||||
:name: default_test_file_preprocessor |
|
||||
:stderr_redirect: :none |
|
||||
:background_exec: :none |
|
||||
:optional: false |
|
||||
:arguments: |
|
||||
- '' |
|
||||
- '' |
|
||||
- "-E" |
|
||||
- -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR |
|
||||
- -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE |
|
||||
- "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR |
|
||||
- "-D$": DEFINES_TEST_PREPROCESS |
|
||||
- "-DGNU_COMPILER" |
|
||||
- '"${1}"' |
|
||||
- -o "${2}" |
|
||||
:test_file_preprocessor_directives: |
|
||||
:executable: gcc.exe |
|
||||
:name: default_test_file_preprocessor_directives |
|
||||
:stderr_redirect: :none |
|
||||
:background_exec: :none |
|
||||
:optional: false |
|
||||
:arguments: |
|
||||
- "-E" |
|
||||
- -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR |
|
||||
- -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE |
|
||||
- "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR |
|
||||
- "-D$": DEFINES_TEST_PREPROCESS |
|
||||
- "-DGNU_COMPILER" |
|
||||
- "-fdirectives-only" |
|
||||
- '"${1}"' |
|
||||
- -o "${2}" |
|
||||
:test_includes_preprocessor: |
|
||||
:executable: gcc.exe |
|
||||
:name: default_test_includes_preprocessor |
|
||||
:stderr_redirect: :none |
|
||||
:background_exec: :none |
|
||||
:optional: false |
|
||||
:arguments: |
|
||||
- '' |
|
||||
- '' |
|
||||
- "-E" |
|
||||
- "-MM" |
|
||||
- "-MG" |
|
||||
- -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR |
|
||||
- -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE |
|
||||
- "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR |
|
||||
- "-D$": DEFINES_TEST_PREPROCESS |
|
||||
- "-DGNU_COMPILER" |
|
||||
- '"${1}"' |
|
||||
:test_compiler: |
|
||||
:arguments: [] |
|
||||
:test_linker: |
|
||||
:arguments: [] |
|
||||
:test_fixture: |
|
||||
:arguments: [] |
|
||||
:link_objects: [] |
|
||||
:test_includes_preprocessor: |
|
||||
:arguments: [] |
|
||||
:test_file_preprocessor: |
|
||||
:arguments: [] |
|
||||
:test_file_preprocessor_directives: |
|
||||
:arguments: [] |
|
||||
:test_dependencies_generator: |
|
||||
:arguments: [] |
|
||||
:release_compiler: |
|
||||
:arguments: [] |
|
||||
:release_linker: |
|
||||
:arguments: [] |
|
||||
:release_assembler: |
|
||||
:arguments: [] |
|
||||
:release_dependencies_generator: |
|
||||
:arguments: [] |
|
||||
:plugins: |
|
||||
:load_paths: |
|
||||
- C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins |
|
||||
:enabled: |
|
||||
- stdout_pretty_tests_report |
|
||||
- module_generator |
|
||||
:display_raw_test_results: false |
|
||||
:stdout_pretty_tests_report_path: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins/stdout_pretty_tests_report |
|
||||
:module_generator_path: C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/lib/../plugins/module_generator |
|
||||
:gcov: |
|
||||
:reports: |
|
||||
- HtmlDetailed |
|
||||
:gcovr: |
|
||||
:html_medium_threshold: 75 |
|
||||
:html_high_threshold: 90 |
|
||||
:module_generator: |
|
||||
:project_root: "./" |
|
||||
:source_root: src/ |
|
||||
:test_root: test/ |
|
@ -1,257 +0,0 @@ |
|||||
#include "src/schach.h" |
|
||||
#include "C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
void setUp(void) |
|
||||
|
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
void tearDown(void) |
|
||||
|
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_print_Schachfeld(void){ |
|
||||
|
|
||||
|
|
||||
|
|
||||
char expected = 'S'; |
|
||||
|
|
||||
int x = 8; |
|
||||
|
|
||||
int y = 8; |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[5][0])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(26), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[4][3])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(27), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_print_Schachfeld_Turm_weiss(void){ |
|
||||
|
|
||||
|
|
||||
|
|
||||
char expected = 'T'; |
|
||||
|
|
||||
int x = 8; |
|
||||
|
|
||||
int y = 8; |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[0][0])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(40), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[0][7])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(41), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_print_Schachfeld_Bauern_weiss(void){ |
|
||||
|
|
||||
|
|
||||
|
|
||||
char expected = 'B'; |
|
||||
|
|
||||
int x = 8; |
|
||||
|
|
||||
int y = 8; |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
for(int l = 0;l<y;l++){ |
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[1][l])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(55), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_print_Schachfeld_dame_schwarz(void){ |
|
||||
|
|
||||
|
|
||||
|
|
||||
char expected = 'd'; |
|
||||
|
|
||||
int x = 8; |
|
||||
|
|
||||
int y = 8; |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[7][3])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(70), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
|
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_read_input(void) { |
|
||||
|
|
||||
|
|
||||
|
|
||||
const char *input = "8\n"; |
|
||||
|
|
||||
int result = 0; |
|
||||
|
|
||||
int expected = 7; |
|
||||
|
|
||||
|
|
||||
|
|
||||
FILE *original_stdin = freopen( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
, "r", |
|
||||
|
|
||||
(__acrt_iob_func(0)) |
|
||||
|
|
||||
); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
FILE *tempInput = fopen("temp_input.txt", "w"); |
|
||||
|
|
||||
fputs(input, tempInput); |
|
||||
|
|
||||
fclose(tempInput); |
|
||||
|
|
||||
|
|
||||
|
|
||||
tempInput = freopen("temp_input.txt", "r", |
|
||||
|
|
||||
(__acrt_iob_func(0)) |
|
||||
|
|
||||
); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
result = read_input(); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)((expected)), (UNITY_INT)((result)), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(96), UNITY_DISPLAY_STYLE_INT); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
fclose(tempInput); |
|
||||
|
|
||||
freopen("/dev/tty", "r", |
|
||||
|
|
||||
(__acrt_iob_func(0)) |
|
||||
|
|
||||
); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
freopen( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
, "r", |
|
||||
|
|
||||
(__acrt_iob_func(0)) |
|
||||
|
|
||||
); |
|
||||
|
|
||||
} |
|
@ -1,6 +0,0 @@ |
|||||
build/test/out/c/cmock.o: \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.c \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.h \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock_internals.h \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h |
|
@ -1 +0,0 @@ |
|||||
build/test/out/c/schach.o: src/schach.c src/main.h |
|
@ -1,4 +0,0 @@ |
|||||
build/test/out/c/test_schach.o: test/test_schach.c \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ |
|
||||
src/schach.h src/main.h |
|
@ -1,4 +0,0 @@ |
|||||
build/test/out/c/test_schach_runner.o: \ |
|
||||
build/test/runners/test_schach_runner.c \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h |
|
@ -1,4 +0,0 @@ |
|||||
build/test/out/c/unity.o: \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.c \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ |
|
||||
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h |
|
@ -1,257 +0,0 @@ |
|||||
#include "src/schach.h" |
|
||||
#include "C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
void setUp(void) |
|
||||
|
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
void tearDown(void) |
|
||||
|
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_print_Schachfeld(void){ |
|
||||
|
|
||||
|
|
||||
|
|
||||
char expected = 'S'; |
|
||||
|
|
||||
int x = 8; |
|
||||
|
|
||||
int y = 8; |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[5][0])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(26), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[4][3])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(27), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_print_Schachfeld_Turm_weiss(void){ |
|
||||
|
|
||||
|
|
||||
|
|
||||
char expected = 'T'; |
|
||||
|
|
||||
int x = 8; |
|
||||
|
|
||||
int y = 8; |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[0][0])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(40), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[0][7])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(41), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_print_Schachfeld_Bauern_weiss(void){ |
|
||||
|
|
||||
|
|
||||
|
|
||||
char expected = 'B'; |
|
||||
|
|
||||
int x = 8; |
|
||||
|
|
||||
int y = 8; |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
for(int l = 0;l<y;l++){ |
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[1][l])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(55), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_print_Schachfeld_dame_schwarz(void){ |
|
||||
|
|
||||
|
|
||||
|
|
||||
char expected = 'd'; |
|
||||
|
|
||||
int x = 8; |
|
||||
|
|
||||
int y = 8; |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((expected)), (UNITY_INT)(UNITY_INT8 )((Spielfeld[7][3])), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(70), UNITY_DISPLAY_STYLE_CHAR); |
|
||||
|
|
||||
|
|
||||
|
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_read_input(void) { |
|
||||
|
|
||||
|
|
||||
|
|
||||
const char *input = "8\n"; |
|
||||
|
|
||||
int result = 0; |
|
||||
|
|
||||
int expected = 7; |
|
||||
|
|
||||
|
|
||||
|
|
||||
FILE *original_stdin = freopen( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
, "r", |
|
||||
|
|
||||
(__acrt_iob_func(0)) |
|
||||
|
|
||||
); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
FILE *tempInput = fopen("temp_input.txt", "w"); |
|
||||
|
|
||||
fputs(input, tempInput); |
|
||||
|
|
||||
fclose(tempInput); |
|
||||
|
|
||||
|
|
||||
|
|
||||
tempInput = freopen("temp_input.txt", "r", |
|
||||
|
|
||||
(__acrt_iob_func(0)) |
|
||||
|
|
||||
); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
result = read_input(); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
UnityAssertEqualNumber((UNITY_INT)((expected)), (UNITY_INT)((result)), ( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
), (UNITY_UINT)(96), UNITY_DISPLAY_STYLE_INT); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
fclose(tempInput); |
|
||||
|
|
||||
freopen("/dev/tty", "r", |
|
||||
|
|
||||
(__acrt_iob_func(0)) |
|
||||
|
|
||||
); |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
freopen( |
|
||||
|
|
||||
((void *)0) |
|
||||
|
|
||||
, "r", |
|
||||
|
|
||||
(__acrt_iob_func(0)) |
|
||||
|
|
||||
); |
|
||||
|
|
||||
} |
|
@ -1,3 +0,0 @@ |
|||||
--- |
|
||||
- C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h |
|
||||
- src/schach.h |
|
@ -1,34 +0,0 @@ |
|||||
--- |
|
||||
:source: |
|
||||
:path: test |
|
||||
:file: test_schach.c |
|
||||
:successes: |
|
||||
- :test: test_print_Schachfeld |
|
||||
:line: 16 |
|
||||
:message: '' |
|
||||
:unity_test_time: 0 |
|
||||
- :test: test_print_Schachfeld_Turm_weiss |
|
||||
:line: 30 |
|
||||
:message: '' |
|
||||
:unity_test_time: 0 |
|
||||
- :test: test_print_Schachfeld_Bauern_weiss |
|
||||
:line: 44 |
|
||||
:message: '' |
|
||||
:unity_test_time: 0 |
|
||||
- :test: test_print_Schachfeld_dame_schwarz |
|
||||
:line: 60 |
|
||||
:message: '' |
|
||||
:unity_test_time: 0 |
|
||||
- :test: test_read_input |
|
||||
:line: 77 |
|
||||
:message: '' |
|
||||
:unity_test_time: 0 |
|
||||
:failures: [] |
|
||||
:ignores: [] |
|
||||
:counts: |
|
||||
:total: 5 |
|
||||
:passed: 5 |
|
||||
:failed: 0 |
|
||||
:ignored: 0 |
|
||||
:stdout: [] |
|
||||
:time: 1.9014686000300571 |
|
@ -1,89 +0,0 @@ |
|||||
/* AUTOGENERATED FILE. DO NOT EDIT. */ |
|
||||
|
|
||||
/*=======Automagically Detected Files To Include=====*/ |
|
||||
#include "unity.h" |
|
||||
|
|
||||
int GlobalExpectCount; |
|
||||
int GlobalVerifyOrder; |
|
||||
char* GlobalOrderError; |
|
||||
|
|
||||
/*=======External Functions This Runner Calls=====*/ |
|
||||
extern void setUp(void); |
|
||||
extern void tearDown(void); |
|
||||
extern void test_print_Schachfeld(void); |
|
||||
extern void test_print_Schachfeld_Turm_weiss(void); |
|
||||
extern void test_print_Schachfeld_Bauern_weiss(void); |
|
||||
extern void test_print_Schachfeld_dame_schwarz(void); |
|
||||
extern void test_read_input(void); |
|
||||
|
|
||||
|
|
||||
/*=======Mock Management=====*/ |
|
||||
static void CMock_Init(void) |
|
||||
{ |
|
||||
GlobalExpectCount = 0; |
|
||||
GlobalVerifyOrder = 0; |
|
||||
GlobalOrderError = NULL; |
|
||||
} |
|
||||
static void CMock_Verify(void) |
|
||||
{ |
|
||||
} |
|
||||
static void CMock_Destroy(void) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
/*=======Test Reset Options=====*/ |
|
||||
void resetTest(void); |
|
||||
void resetTest(void) |
|
||||
{ |
|
||||
tearDown(); |
|
||||
CMock_Verify(); |
|
||||
CMock_Destroy(); |
|
||||
CMock_Init(); |
|
||||
setUp(); |
|
||||
} |
|
||||
void verifyTest(void); |
|
||||
void verifyTest(void) |
|
||||
{ |
|
||||
CMock_Verify(); |
|
||||
} |
|
||||
|
|
||||
/*=======Test Runner Used To Run Each Test=====*/ |
|
||||
static void run_test(UnityTestFunction func, const char* name, UNITY_LINE_TYPE line_num) |
|
||||
{ |
|
||||
Unity.CurrentTestName = name; |
|
||||
Unity.CurrentTestLineNumber = line_num; |
|
||||
#ifdef UNITY_USE_COMMAND_LINE_ARGS |
|
||||
if (!UnityTestMatches()) |
|
||||
return; |
|
||||
#endif |
|
||||
Unity.NumberOfTests++; |
|
||||
UNITY_CLR_DETAILS(); |
|
||||
UNITY_EXEC_TIME_START(); |
|
||||
CMock_Init(); |
|
||||
if (TEST_PROTECT()) |
|
||||
{ |
|
||||
setUp(); |
|
||||
func(); |
|
||||
} |
|
||||
if (TEST_PROTECT()) |
|
||||
{ |
|
||||
tearDown(); |
|
||||
CMock_Verify(); |
|
||||
} |
|
||||
CMock_Destroy(); |
|
||||
UNITY_EXEC_TIME_STOP(); |
|
||||
UnityConcludeTest(); |
|
||||
} |
|
||||
|
|
||||
/*=======MAIN=====*/ |
|
||||
int main(void) |
|
||||
{ |
|
||||
UnityBegin("test_schach.c"); |
|
||||
run_test(test_print_Schachfeld, "test_print_Schachfeld", 16); |
|
||||
run_test(test_print_Schachfeld_Turm_weiss, "test_print_Schachfeld_Turm_weiss", 30); |
|
||||
run_test(test_print_Schachfeld_Bauern_weiss, "test_print_Schachfeld_Bauern_weiss", 44); |
|
||||
run_test(test_print_Schachfeld_dame_schwarz, "test_print_Schachfeld_dame_schwarz", 60); |
|
||||
run_test(test_read_input, "test_read_input", 77); |
|
||||
|
|
||||
return UnityEnd(); |
|
||||
} |
|
@ -0,0 +1,32 @@ |
|||||
|
#include <stdio.h> |
||||
|
#include <stdlib.h> |
||||
|
#include <string.h> |
||||
|
|
||||
|
char* getUserInput() { |
||||
|
|
||||
|
const int BUFFER_SIZE = 64; |
||||
|
char *input = (char*)malloc(BUFFER_SIZE * sizeof(char)); |
||||
|
if (input == NULL) { |
||||
|
// Fehler bei speicherzuweisung |
||||
|
return NULL; |
||||
|
} |
||||
|
|
||||
|
printf("-> "); |
||||
|
if (fgets(input, BUFFER_SIZE, stdin) == NULL) { |
||||
|
// Fehler bei fgets |
||||
|
free(input); |
||||
|
return NULL; |
||||
|
} |
||||
|
|
||||
|
size_t len = strlen(input); |
||||
|
if (len > 0 && input[len - 1] == '\n') { |
||||
|
input[len - 1] = '\0'; |
||||
|
} |
||||
|
|
||||
|
// Länge an den eigentlichen input anpassen um speicher zu sparen |
||||
|
char *resizedInput = realloc(input, strlen(input) + 1); |
||||
|
if (resizedInput != NULL) { |
||||
|
input = resizedInput; |
||||
|
} |
||||
|
return input; |
||||
|
} |
@ -0,0 +1,6 @@ |
|||||
|
#ifndef INPUT |
||||
|
#define INPUT |
||||
|
|
||||
|
char* getUserInput(); |
||||
|
|
||||
|
#endif // INPUT |
@ -0,0 +1,17 @@ |
|||||
|
#include <stdio.h> |
||||
|
#include <stdlib.h> |
||||
|
#include <stdbool.h> |
||||
|
#include "spieler.h" |
||||
|
|
||||
|
bool istzugerlaubt(char** Brett, int startX, int startY, int endX, int endY, Player player) { |
||||
|
/* Regeln hierhin |
||||
|
z.B. schauen ob der zug auch innerhalb vom spielbrett ist, |
||||
|
schauen ob auf dem zielfeld keine eigene Figur steht, |
||||
|
schauen ob von der startposition aus der zug auch für die ausgewählte figur möglich ist. |
||||
|
|
||||
|
return true wenn möglich oder false falls nicht. |
||||
|
*/ |
||||
|
} |
||||
|
void machezug(char** Brett, int startX, int startY, int endX, int endY) { |
||||
|
//wenn istzugerlaubt true ist wird das hier ausgeführt |
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
#ifndef MOVING_H |
||||
|
#define MOVING_H |
||||
|
|
||||
|
#include <stdbool.h> |
||||
|
#include "spieler.h" |
||||
|
|
||||
|
bool istzugerlaubt(char** Brett, int startX, int startY, int endX, int endY, Player player); |
||||
|
void machezug(char** Brett, int startX, int startY, int endX, int endY); |
||||
|
|
||||
|
#endif // MOVING_H |
@ -0,0 +1,68 @@ |
|||||
|
#include <stdio.h> |
||||
|
#include <stdlib.h> |
||||
|
|
||||
|
char** Schachbrett_erstellen() { |
||||
|
|
||||
|
int R = 8; //Reihen |
||||
|
int Z = 8; //zeilen |
||||
|
|
||||
|
//Dynamisch Platz zuweisen für schachbrett |
||||
|
char** Brett = (char**)malloc(R * sizeof(char*)); |
||||
|
|
||||
|
if (Brett == NULL) { |
||||
|
// Fehler bei speicherzuweißung |
||||
|
return NULL; |
||||
|
} |
||||
|
for (int i = 0; i < R; i++) { |
||||
|
Brett[i] = (char*)malloc(Z * sizeof(char)); |
||||
|
if (Brett[i] == NULL) { |
||||
|
// Speicherfehlerbehbung |
||||
|
for (int j = 0; j < i; j++) { |
||||
|
free(Brett[j]); |
||||
|
} |
||||
|
free(Brett); |
||||
|
return NULL; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Spielbrett befüllen, groß und kleinschreibung unterschiedlich um schwarz/weiß zu trennen |
||||
|
char Aufbau[8][8] = { |
||||
|
{ 'R' , 'N' , 'B' , 'Q' , 'K' , 'B' , 'N' , 'R' }, |
||||
|
{ 'P' , 'P' , 'P' , 'P' , 'P' , 'P' , 'P' , 'P' }, |
||||
|
{ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' }, |
||||
|
{ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' }, |
||||
|
{ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' }, |
||||
|
{ ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' }, |
||||
|
{ 'p' , 'p' , 'p' , 'p' , 'p' , 'p' , 'p' , 'p' }, |
||||
|
{ 'r' , 'n' , 'b' , 'q' , 'k' , 'b' , 'n' , 'r' } |
||||
|
}; |
||||
|
|
||||
|
for (int i = 0; i < 8; i++) { |
||||
|
for (int j = 0; j < 8; j++) { |
||||
|
Brett[i][j] = Aufbau[i][j]; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return Brett; |
||||
|
} |
||||
|
|
||||
|
void print_Schachfeld(char** Brett, int Reihen, int Spalten) { |
||||
|
for (int i = 0; i < Reihen; i++) { |
||||
|
for (int j = 0; j < Spalten; j++) { |
||||
|
printf(" %c ", Brett[i][j]); |
||||
|
} |
||||
|
printf("\n"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void Schachbrettspeicher_freigeben(char** Brett, int Reihen) { |
||||
|
if (Brett == NULL) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
for (int i = 0; i < Reihen; i++) { |
||||
|
free(Brett[i]); |
||||
|
} |
||||
|
|
||||
|
free(Brett); |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
#ifndef SCHACHBRETT_H |
||||
|
#define SCHACHBRETT_H |
||||
|
|
||||
|
char** Schachbrett_erstellen(); |
||||
|
void print_Schachfeld(char** Brett, int Reihen, int Spalten) |
||||
|
void Schachbrettspeicher_freigeben(char** Brett, int Reihen); |
||||
|
|
||||
|
#endif // SCHACHBRETT_H |
@ -0,0 +1,9 @@ |
|||||
|
#ifndef Spieler |
||||
|
#define Spieler |
||||
|
|
||||
|
typedef enum { |
||||
|
PLAYER_WHITE, |
||||
|
PLAYER_BLACK |
||||
|
} Player; |
||||
|
|
||||
|
#endif // Spieler |
@ -1,9 +0,0 @@ |
|||||
#ifndef MAIN |
|
||||
#define MAIN |
|
||||
|
|
||||
|
|
||||
int main(); |
|
||||
|
|
||||
|
|
||||
|
|
||||
#endif |
|
@ -1,195 +0,0 @@ |
|||||
#include <stdlib.h> |
|
||||
#include <stdio.h> |
|
||||
|
|
||||
#include "main.h" |
|
||||
|
|
||||
/* |
|
||||
Spielablauf: |
|
||||
1. Ausgabe vom Spielfeld |
|
||||
2. Weiß nach Figur für Zug fragen |
|
||||
3. Weiß nach Ziel der Figur fragen |
|
||||
4. Überprüfen ob Eingabe möglich ist |
|
||||
4.1. falls nicht Schritt 2,3 und 4 Wiederholen |
|
||||
4.2. Schach überprüfen bzw Schachmatt |
|
||||
5. Figur bewegen |
|
||||
5.1. falls gegnerische Figur -> Schlagen |
|
||||
6. Wiederholung von 1-5 für Schwarz |
|
||||
|
|
||||
|
|
||||
Eingaben sind Koordinaten |
|
||||
|
|
||||
Programmablauf: |
|
||||
1.Spielfeld in der create_Schachfeld erstellen |
|
||||
1.1 Schachfeld füllen |
|
||||
2.Spielfeld anzeigen mit print_Schachfeld |
|
||||
3.Eingabe mit choose_Figur |
|
||||
3.1 erst x dann y |
|
||||
4.Eingabe mit choose_destination_Figur |
|
||||
4.1 erst x dann y |
|
||||
5.Überprüfung der Figur mit check_Figur |
|
||||
5.1.bsp.: Eingabe choose_Figur x=0 y=0 temp. char welcher die eingabe des Spielfeldarray |
|
||||
an der Stelle 0 0 speichert |
|
||||
5.2. if abfrage welche Figur da steht |
|
||||
5.2.1. wechsel in die seperaten Figuren-Funktionen(Datein) |
|
||||
5.3. Prüfen ob schwarz oder weiß durch groß und kleinschreibung |
|
||||
6.In den seperaten Figuren-Funktionen wird überprüft ob der Zug möglich ist |
|
||||
6.1 wenn möglich wird die Figur an die stelle gesetzt |
|
||||
6.2 wenn es nicht möglich ist dann wird Schritt 2-6 wiederholt |
|
||||
7.(Schachmatt wird in check_checkmate überprüft) |
|
||||
8.Schritt 2-8 wird Wiederholt |
|
||||
|
|
||||
*/ |
|
||||
int checkmate(){ |
|
||||
return 0; |
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
int read_input(){ |
|
||||
|
|
||||
int koordinate = 0; |
|
||||
|
|
||||
scanf("%d", &koordinate); |
|
||||
|
|
||||
if(koordinate < 9){ |
|
||||
return koordinate - 1; |
|
||||
} |
|
||||
else{ |
|
||||
|
|
||||
read_input(); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
void choose_Figur(char active_Player, char** spielfeld){ |
|
||||
|
|
||||
int x,y; |
|
||||
|
|
||||
printf("Spieler %c ist an der Reihe!\nX-Koordinaten der Figur die bewegt werden soll eingeben:\n", active_Player); |
|
||||
|
|
||||
|
|
||||
x = read_input(); |
|
||||
|
|
||||
printf("X-Koordinaten der Figur der bewegt werden soll eingeben:\n"); |
|
||||
|
|
||||
y = read_input(); |
|
||||
|
|
||||
char ausgewählte_Figur = spielfeld[x][y]; |
|
||||
|
|
||||
if (active_Player == 'w'){ |
|
||||
switch(ausgewählte_Figur){ |
|
||||
case 'D' : |
|
||||
//dame.c; |
|
||||
break; |
|
||||
case 'K' : |
|
||||
//könig.c; |
|
||||
break; |
|
||||
case 'L' : |
|
||||
//läufer.c; |
|
||||
break; |
|
||||
case 'T' : |
|
||||
//turm.c; |
|
||||
break; |
|
||||
case 'P' : |
|
||||
//pferd.c; |
|
||||
break; |
|
||||
case 'B' : |
|
||||
//bauer.c; |
|
||||
break; |
|
||||
default : |
|
||||
printf("Wrong Input"); |
|
||||
choose_Figur(active_Player,spielfeld); |
|
||||
break; |
|
||||
} |
|
||||
|
|
||||
}else{ |
|
||||
switch(ausgewählte_Figur){ |
|
||||
case 'd' : |
|
||||
//dame.c; |
|
||||
break; |
|
||||
case 'k' : |
|
||||
//könig.c; |
|
||||
break; |
|
||||
case 'l' : |
|
||||
//läufer.c; |
|
||||
break; |
|
||||
case 't' : |
|
||||
//turm.c; |
|
||||
break; |
|
||||
case 'p' : |
|
||||
//pferd.c; |
|
||||
break; |
|
||||
case 'b' : |
|
||||
//bauer.c; |
|
||||
break; |
|
||||
default : |
|
||||
printf("Wrong Input"); |
|
||||
choose_Figur(active_Player,spielfeld); |
|
||||
break; |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
void print_Schachfeld(char** Spielfeld, int x, int y) { |
|
||||
for (int i = 0; i < x; i++) { |
|
||||
for (int j = 0; j < y; j++) { |
|
||||
printf(" %c ", Spielfeld[i][j]); |
|
||||
} |
|
||||
printf ("\n"); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
char** create_Schachfeld(int x, int y) { |
|
||||
char** Spielfeld = (char**)malloc(x * sizeof(char*)); |
|
||||
|
|
||||
for (int i = 0; i < x; i++) { |
|
||||
Spielfeld[i] = (char*)malloc(y * sizeof(char)); |
|
||||
|
|
||||
for (int j = 0; j < y; j++) { |
|
||||
if ((i + j) % 2 == 0) { |
|
||||
Spielfeld[i][j] = 'W'; |
|
||||
} else { |
|
||||
Spielfeld[i][j] = 'S'; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
Spielfeld[0][0] = 'T'; //Turm Weiß |
|
||||
Spielfeld[0][1] = 'P'; //Pferd Weiß |
|
||||
Spielfeld[0][2] = 'L'; //Laufer Weiß |
|
||||
Spielfeld[0][3] = 'D'; //Dame Weiß |
|
||||
Spielfeld[0][4] = 'K'; //König Weiß |
|
||||
Spielfeld[0][5] = 'L'; |
|
||||
Spielfeld[0][6] = 'P'; |
|
||||
Spielfeld[0][7] = 'T'; |
|
||||
|
|
||||
for(int l = 0;l<8;l++){ // Bauern Weiß |
|
||||
Spielfeld[1][l] = 'B'; |
|
||||
} |
|
||||
|
|
||||
Spielfeld[7][0] = 't'; //Turm Schwarz |
|
||||
Spielfeld[7][1] = 'p'; |
|
||||
Spielfeld[7][2] = 'l'; |
|
||||
Spielfeld[7][3] = 'd'; |
|
||||
Spielfeld[7][4] = 'k'; |
|
||||
Spielfeld[7][5] = 'l'; |
|
||||
Spielfeld[7][6] = 'p'; |
|
||||
Spielfeld[7][7] = 't'; |
|
||||
|
|
||||
for(int l = 0;l<8;l++){ //Bauern Schwarz |
|
||||
Spielfeld[6][l] = 'b'; |
|
||||
} |
|
||||
|
|
||||
return Spielfeld; |
|
||||
} |
|
||||
|
|
||||
void free_Schachfeld(char** Spielfeld, int x) { |
|
||||
for (int i = 0; i < x; i++) { |
|
||||
free(Spielfeld[i]); |
|
||||
} |
|
||||
free(Spielfeld); |
|
||||
} |
|
||||
|
|
||||
|
|
@ -1,15 +0,0 @@ |
|||||
#ifndef SCHACH |
|
||||
#define SCHACH |
|
||||
|
|
||||
#include "main.h" |
|
||||
|
|
||||
void print_Schachfeld(char** , int , int ); |
|
||||
char** create_Schachfeld(int , int ); |
|
||||
void free_Schachfeld(char** , int ); |
|
||||
int checkmate(); |
|
||||
int read_input(); |
|
||||
void choose_Figur(char, char**); |
|
||||
|
|
||||
|
|
||||
|
|
||||
#endif |
|
@ -1,3 +1,3 @@ |
|||||
- Luis Hahn, fdai7834 |
- Luis Hahn, fdai7834 |
||||
- Hendrik Voß, fdai 7723 |
- Hendrik Voß, fdai 7723 |
||||
- Anton Lohrey, fdai7492 |
|
||||
|
- Anton Lohrey, fdai7492 |
@ -1 +0,0 @@ |
|||||
8 |
|
@ -0,0 +1,45 @@ |
|||||
|
#ifdef TEST |
||||
|
#include <stdlib.h> |
||||
|
#include "unity.h" |
||||
|
#include "Input.h" |
||||
|
|
||||
|
|
||||
|
void setUp(void) { |
||||
|
} |
||||
|
|
||||
|
void tearDown(void) { |
||||
|
} |
||||
|
|
||||
|
void test_getUserInput(void) { |
||||
|
/*Bei dem benutzen dieser Funktion muss man mit free() den speicher wieder freigeben um memory leaks zu vermeiden |
||||
|
Beispiel : |
||||
|
|
||||
|
char* input = getUserInput(); |
||||
|
if (input != NULL) { |
||||
|
|
||||
|
input wird hier benutzt |
||||
|
|
||||
|
|
||||
|
free(input); damit wird der speicher wieder freigegeben wird |
||||
|
|
||||
|
*/ |
||||
|
const char *test_input = "a1"; |
||||
|
FILE *tempInputFile; |
||||
|
// Datei erstellen |
||||
|
tempInputFile = fopen("temp_input.txt", "w"); |
||||
|
fprintf(tempInputFile, "%s\n", test_input); |
||||
|
fclose(tempInputFile); |
||||
|
|
||||
|
// aus der Datei lesen um User input zu simulieren |
||||
|
tempInputFile = freopen("temp_input.txt", "r", stdin); |
||||
|
|
||||
|
|
||||
|
char *actual_input = getUserInput(); |
||||
|
TEST_ASSERT_EQUAL_STRING(test_input, actual_input); |
||||
|
|
||||
|
//Clean-up |
||||
|
free(actual_input); // siehe kommentar in input.c |
||||
|
fclose(tempInputFile); |
||||
|
remove("temp_input.txt"); // Datei automatisch löschen |
||||
|
} |
||||
|
#endif // TEST |
@ -0,0 +1,26 @@ |
|||||
|
#ifdef TEST |
||||
|
#include "unity.h" |
||||
|
#include "Schachbrett.h" |
||||
|
|
||||
|
void setUp(void) { |
||||
|
} |
||||
|
|
||||
|
void tearDown(void) { |
||||
|
} |
||||
|
|
||||
|
void test_Schachbrett_erstellen(void) { |
||||
|
char** brett = Schachbrett_erstellen(); |
||||
|
|
||||
|
TEST_ASSERT_NOT_NULL(brett); |
||||
|
|
||||
|
// Testen von ein Paar Positionen |
||||
|
TEST_ASSERT_EQUAL('R', brett[0][0]); |
||||
|
TEST_ASSERT_EQUAL('p', brett[6][0]); |
||||
|
TEST_ASSERT_EQUAL(' ', brett[4][4]); |
||||
|
|
||||
|
for (int i = 0; i < 8; i++) { |
||||
|
free(brett[i]); |
||||
|
} |
||||
|
free(brett); |
||||
|
} |
||||
|
#endif // TEST |
@ -1,107 +0,0 @@ |
|||||
#ifdef TEST |
|
||||
|
|
||||
#include "unity.h" |
|
||||
|
|
||||
#include "schach.h" |
|
||||
|
|
||||
#include "string.h" |
|
||||
void setUp(void) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
void tearDown(void) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
void test_print_Schachfeld(void){ |
|
||||
/* arrange */ |
|
||||
char expected = 'S'; |
|
||||
int x = 8; |
|
||||
int y = 8; |
|
||||
|
|
||||
/* act */ |
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
/* assert */ |
|
||||
TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[5][0]); |
|
||||
TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[4][3]); |
|
||||
} |
|
||||
|
|
||||
void test_print_Schachfeld_Turm_weiss(void){ |
|
||||
/* arrange */ |
|
||||
char expected = 'T'; |
|
||||
int x = 8; |
|
||||
int y = 8; |
|
||||
|
|
||||
/* act */ |
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
/* assert */ |
|
||||
TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[0][0]); |
|
||||
TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[0][7]); |
|
||||
} |
|
||||
|
|
||||
void test_print_Schachfeld_Bauern_weiss(void){ |
|
||||
/* arrange */ |
|
||||
char expected = 'B'; |
|
||||
int x = 8; |
|
||||
int y = 8; |
|
||||
|
|
||||
/* act */ |
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
/* assert */ |
|
||||
for(int l = 0;l<y;l++){ |
|
||||
TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[1][l]); |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
void test_print_Schachfeld_dame_schwarz(void){ |
|
||||
/* arrange */ |
|
||||
char expected = 'd'; |
|
||||
int x = 8; |
|
||||
int y = 8; |
|
||||
|
|
||||
/* act */ |
|
||||
char** Spielfeld = create_Schachfeld(x, y); |
|
||||
|
|
||||
/* assert */ |
|
||||
TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[7][3]); |
|
||||
//TEST_ASSERT_EQUAL_CHAR(expected,Spielfeld[0][7]); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
void test_read_input(void) { |
|
||||
/* arrange */ |
|
||||
const char *input = "8\n"; |
|
||||
int result = 0; |
|
||||
int expected = 7; |
|
||||
|
|
||||
FILE *original_stdin = freopen(NULL, "r", stdin); |
|
||||
|
|
||||
|
|
||||
FILE *tempInput = fopen("temp_input.txt", "w"); |
|
||||
fputs(input, tempInput); |
|
||||
fclose(tempInput); |
|
||||
|
|
||||
tempInput = freopen("temp_input.txt", "r", stdin); |
|
||||
|
|
||||
/* act */ |
|
||||
result = read_input(); |
|
||||
|
|
||||
/* assert */ |
|
||||
TEST_ASSERT_EQUAL_INT(expected, result); |
|
||||
|
|
||||
/* Clean up */ |
|
||||
fclose(tempInput); |
|
||||
freopen("/dev/tty", "r", stdin); |
|
||||
|
|
||||
|
|
||||
freopen(NULL, "r", stdin); |
|
||||
} |
|
||||
|
|
||||
#endif // TEST |
|
||||
|
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue