class Z_CL_ABAP101_JAN_KEN_PON definition public create public . *"* public components of class Z_CL_ABAP101_JAN_KEN_PON *"* do not include other source files here!!! public section. interfaces Z_IF_ABAP101_JAN_KEN_PON_TYPES . methods CONSTRUCTOR importing value(IM_PLAYER_1) type Z_IF_ABAP101_JAN_KEN_PON_TYPES=>CTY_PLAYER_NAME default 'Furlan' value(IM_PLAYER_2) type Z_IF_ABAP101_JAN_KEN_PON_TYPES=>CTY_PLAYER_NAME default 'Pagoti' . methods JAN_KEN_PON importing value(IM_HAND_PLAYER_1) type Z_IF_ABAP101_JAN_KEN_PON_TYPES=>CTY_HAND value(IM_HAND_PLAYER_2) type Z_IF_ABAP101_JAN_KEN_PON_TYPES=>CTY_HAND returning value(RE_WINNER) type Z_IF_ABAP101_JAN_KEN_PON_TYPES=>CTY_PLAYER_NAME . class-methods GENERATE_RANDOM_HAND returning value(RE_V_RANDOM_HAND) type Z_IF_ABAP101_JAN_KEN_PON_TYPES=>CTY_HAND . methods GET_WINNER returning value(RE_WINNER) type Z_IF_ABAP101_JAN_KEN_PON_TYPES=>CTY_PLAYER_NAME . class-methods PRINT_HAND importing value(IM_V_HAND_TYPE) type Z_IF_ABAP101_JAN_KEN_PON_TYPES=>CTY_HAND . class-methods GET_WINNER_OF_HAND importing !IM_V_LOSER_HAND type Z_IF_ABAP101_JAN_KEN_PON_TYPES=>CTY_HAND returning value(RE_V_WINNER_HAND) type Z_IF_ABAP101_JAN_KEN_PON_TYPES=>CTY_HAND . *"* protected components of class Z_CL_ABAP101_JAN_KEN_PON *"* do not include other source files here!!! protected section. constants C_HAND_SCISSORS type Z_IF_ABAP101_JAN_KEN_PON_TYPES~CTY_HAND value 'SCISSORS'. "#EC NOTEXT constants C_HAND_ROCK type Z_IF_ABAP101_JAN_KEN_PON_TYPES~CTY_HAND value 'ROCK'. "#EC NOTEXT constants C_HAND_PAPER type Z_IF_ABAP101_JAN_KEN_PON_TYPES~CTY_HAND value 'PAPER'. "#EC NOTEXT *"* private components of class Z_CL_ABAP101_JAN_KEN_PON *"* do not include other source files here!!! private section. data V_PLAYER_1 type Z_IF_ABAP101_JAN_KEN_PON_TYPES~CTY_PLAYER_NAME . data V_PLAYER_2 type Z_IF_ABAP101_JAN_KEN_PON_TYPES~CTY_PLAYER_NAME . data V_LAST_WINNER type Z_IF_ABAP101_JAN_KEN_PON_TYPES~CTY_PLAYER_NAME . class-methods PRINT_HAND_PAPER . class-methods PRINT_HAND_ROCK . class-methods PRINT_HAND_SCISSORS . *"* local class implementation for public class *"* use this source file for the implementation part of *"* local helper classes *"* use this source file for any type declarations (class *"* definitions, interfaces or data types) you need for method *"* implementation or private method's signature *"* use this source file for any macro definitions you need *"* in the implementation part of the class CLASS abap_unit_testclass DEFINITION DEFERRED. CLASS z_cl_abap101_jan_ken_pon DEFINITION LOCAL FRIENDS abap_unit_testclass. * ---------------------------------------------------------------------- CLASS abap_unit_testclass DEFINITION FOR TESTING "#AU Duration Medium "#AU Risk_Level Harmless . * ---------------------------------------------------------------------- * =============== PUBLIC SECTION. * =============== INTERFACES: z_if_abap101_jan_ken_pon_types. * ================== PROTECTED SECTION. * ================== * ================ PRIVATE SECTION. * ================ DATA: o_game_1 TYPE REF TO z_cl_abap101_jan_ken_pon. "#EC NOTEXT " Players Names CONSTANTS: c_player_furlan TYPE z_if_abap101_jan_ken_pon_types~cty_player_name VALUE 'Furlan', c_player_pagoti TYPE z_if_abap101_jan_ken_pon_types~cty_player_name VALUE 'Pagoti', c_player_abap101 TYPE z_if_abap101_jan_ken_pon_types~cty_player_name VALUE 'ABAP101', c_player_depressao TYPE z_if_abap101_jan_ken_pon_types~cty_player_name VALUE 'Depressao'. * 'Setup' is always called BEFORE a unit test METHODS: setup. * 'Teardown' is always called AFTER a unit test METHODS: teardown. * This test was made to garantee the correct state of the last player which won a game METHODS: get_winner FOR TESTING. METHODS: * These tests were made to garantee that when P1 is anyone and has a better hand, he wins jan_ken_pon_p1_furlan_p1_win FOR TESTING, jan_ken_pon_p1_pagoti_p1_win FOR TESTING, jan_ken_pon_p1_abap101_p1_win FOR TESTING, jan_ken_pon_p1_depress_p1_win FOR TESTING, * These tests were made to garantee that when P1 is anyone and has NOT a better hand, he loses jan_ken_pon_p1_furlan_p2_win FOR TESTING, jan_ken_pon_p1_pagoti_p2_win FOR TESTING, jan_ken_pon_p1_abap101_p2_win FOR TESTING, jan_ken_pon_p1_depress_p2_win FOR TESTING, * These tests were made to garantee that when P2 is anyone and has a better hand, he wins jan_ken_pon_p2_furlan_p1_win FOR TESTING, jan_ken_pon_p2_pagoti_p1_win FOR TESTING, jan_ken_pon_p2_abap101_p1_win FOR TESTING, jan_ken_pon_p2_depress_p1_win FOR TESTING, * These tests were made to garantee that when P2 is anyone and has NOT a better hand, he loses jan_ken_pon_p2_furlan_p2_win FOR TESTING, jan_ken_pon_p2_pagoti_p2_win FOR TESTING, jan_ken_pon_p2_abap101_p2_win FOR TESTING, jan_ken_pon_p2_depress_p2_win FOR TESTING, * These tests were made to test games which 'Rock' is the first hand jan_ken_pon_rock_rock_draw FOR TESTING, jan_ken_pon_rock_sciss_p1 FOR TESTING, jan_ken_pon_rock_paper_p2 FOR TESTING, * These tests were made to test games which 'Paper' is the first hand jan_ken_pon_paper_rock_p1 FOR TESTING, jan_ken_pon_paper_sciss_p2 FOR TESTING, jan_ken_pon_paper_paper_draw FOR TESTING, * These tests were made to test games which 'Scissors' is the first hand jan_ken_pon_sciss_rock_p2 FOR TESTING, jan_ken_pon_sciss_sciss_draw FOR TESTING, jan_ken_pon_sciss_paper_p1 FOR TESTING, * These tests were made to test all games possibilities jan_ken_pon_1hand_win_p1_win FOR TESTING, jan_ken_pon_2hand_win_p2_win FOR TESTING, jan_ken_pon_draw_game_draw FOR TESTING. ENDCLASS. "Abap_Unit_Testclass * ---------------------------------------------------------------------- CLASS abap_unit_testclass IMPLEMENTATION. * ---------------------------------------------------------------------- * ---------------------------------------------------------------------- METHOD setup. * ---------------------------------------------------------------------- DATA im_player_1 TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. DATA im_player_2 TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_pagoti. ENDMETHOD. "Setup * ---------------------------------------------------------------------- METHOD teardown. * ---------------------------------------------------------------------- CLEAR: o_game_1. ENDMETHOD. "Teardown * ---------------------------------------------------------------------- METHOD get_winner. * ---------------------------------------------------------------------- DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CALL METHOD o_game_1->jan_ken_pon EXPORTING im_hand_player_1 = o_game_1->c_hand_scissors im_hand_player_2 = o_game_1->c_hand_rock * receiving * re_winner = re_winner . re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_2 msg = 'Testing Winner' * level = ). ENDMETHOD. "Get_Winner METHOD: jan_ken_pon_p1_furlan_p1_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_rock_sciss_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'Furlan Win: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_sciss_paper_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'Furlan Win: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_paper_rock_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'Furlan Win: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p1_furlan_p1_win METHOD: jan_ken_pon_p1_pagoti_p1_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_rock_sciss_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'Pagoti Win: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_sciss_paper_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'Pagoti Win: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_paper_rock_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'Pagoti Win: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p1_pagoti_p1_win METHOD: jan_ken_pon_p1_abap101_p1_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_rock_sciss_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'ABAP101 Win: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_sciss_paper_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'ABAP101 Win: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_paper_rock_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'ABAP101 Win: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p1_abap101_p1_win METHOD: jan_ken_pon_p1_depress_p1_win . DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_rock_sciss_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'Depressao Win: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_sciss_paper_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'Depressao Win: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_paper_rock_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'Depressao Win: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p1_depressao_p1_win METHOD: jan_ken_pon_p1_furlan_p2_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_rock_paper_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'Furlan Lose: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_sciss_rock_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'Furlan Lose: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_paper_sciss_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'Furlan Lose: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p1_furlan_p2_win METHOD: jan_ken_pon_p1_pagoti_p2_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_rock_paper_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'Pagoti Lose: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_sciss_rock_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'Pagoti Lose: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_paper_sciss_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'Pagoti Lose: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p1_pagoti_p2_win METHOD: jan_ken_pon_p1_abap101_p2_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_rock_paper_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'ABAP101 Lose: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_sciss_rock_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'ABAP101 Lose: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_paper_sciss_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'ABAP101 Lose: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p1_abap101_p2_win METHOD: jan_ken_pon_p1_depress_p2_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_rock_paper_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'Depressao Lose: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_sciss_rock_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'Depressao Lose: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_paper_sciss_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'Depressao Lose: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p1_depressao_p2_win METHOD: jan_ken_pon_p2_furlan_p1_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_rock_sciss_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'Furlan (P2) Lose: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_sciss_paper_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'Furlan (P2) Lose: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_paper_rock_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'Furlan (P2) Lose: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p2_furlan_p1_win METHOD: jan_ken_pon_p2_pagoti_p1_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_rock_sciss_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'Pagoti (P2) Lose: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_sciss_paper_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'Pagoti (P2) Lose: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_paper_rock_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'Pagoti (P2) Lose: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p2_pagoti_p1_win METHOD: jan_ken_pon_p2_abap101_p1_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_rock_sciss_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'ABAP101 (P2) Lose: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_sciss_paper_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'ABAP101 (P2) Lose: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_paper_rock_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'ABAP101 (P2) Lose: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p2_abap101_p1_win METHOD: jan_ken_pon_p2_depress_p1_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_rock_sciss_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'Depressao (P2) Lose: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_sciss_paper_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'Depressao (P2) Lose: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_paper_rock_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'Depressao (P2) Lose: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p2_depressao_p1_win METHOD: jan_ken_pon_p2_furlan_p2_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_rock_paper_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'Furlan (P2) Win: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_sciss_rock_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'Furlan (P2) Win: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_furlan. CALL METHOD: jan_ken_pon_paper_sciss_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_furlan msg = 'Furlan (P2) Win: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p2_furlan_p2_win METHOD: jan_ken_pon_p2_pagoti_p2_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_rock_paper_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'Pagoti (P2) Win: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_sciss_rock_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'Pagoti (P2) Win: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_pagoti. CALL METHOD: jan_ken_pon_paper_sciss_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_pagoti msg = 'Pagoti (P2) Win: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p2_pagoti_p2_win METHOD: jan_ken_pon_p2_abap101_p2_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_rock_paper_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'ABAP101 (P2) Win: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_sciss_rock_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'ABAP101 (P2) Win: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_depressao im_player_2 = c_player_abap101. CALL METHOD: jan_ken_pon_paper_sciss_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_abap101 msg = 'ABAP101 (P2) Win: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p2_abap101_p2_win METHOD: jan_ken_pon_p2_depress_p2_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_furlan im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_rock_paper_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'Depressao (P2) Win: Rock x Scissors' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_pagoti im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_sciss_rock_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'Depressao (P2) Win: Scissors x Paper' * level = ). ********************************************************************** CREATE OBJECT o_game_1 EXPORTING im_player_1 = c_player_abap101 im_player_2 = c_player_depressao. CALL METHOD: jan_ken_pon_paper_sciss_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = c_player_depressao msg = 'Depressao (P2) Win: Paper x Rock' * level = ). ********************************************************************** ENDMETHOD. "JAN_KEN_pon_p2_depressao_p2_win METHOD: jan_ken_pon_rock_rock_draw. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. re_winner_act = o_game_1->jan_ken_pon( im_hand_player_1 = o_game_1->c_hand_rock im_hand_player_2 = o_game_1->c_hand_rock ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = space msg = 'Rock x Rock - Draw' * level = ). ENDMETHOD. "JAN_KEN_pon_rock_rock_draw METHOD: jan_ken_pon_rock_sciss_p1. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. re_winner_act = o_game_1->jan_ken_pon( im_hand_player_1 = o_game_1->c_hand_rock im_hand_player_2 = o_game_1->c_hand_scissors ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_1 msg = 'Rock x Scissors - P1 win' * level = ). ENDMETHOD. "JAN_KEN_pon_rock_sciss_p1 METHOD: jan_ken_pon_rock_paper_p2. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. re_winner_act = o_game_1->jan_ken_pon( im_hand_player_1 = o_game_1->c_hand_rock im_hand_player_2 = o_game_1->c_hand_paper ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_2 msg = 'Rock x Paper - P2 win' * level = ). ENDMETHOD. "JAN_KEN_pon_rock_paper_p2 METHOD: jan_ken_pon_paper_rock_p1. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. re_winner_act = o_game_1->jan_ken_pon( im_hand_player_1 = o_game_1->c_hand_paper im_hand_player_2 = o_game_1->c_hand_rock ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_1 msg = 'Paper x Rock - P1 win' * level = ). ENDMETHOD. "JAN_KEN_pon_paper_rock_p1 METHOD: jan_ken_pon_paper_sciss_p2. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. re_winner_act = o_game_1->jan_ken_pon( im_hand_player_1 = o_game_1->c_hand_paper im_hand_player_2 = o_game_1->c_hand_scissors ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_2 msg = 'Paper x Scissors - P2 win' * level = ). ENDMETHOD. "JAN_KEN_pon_paper_sciss_p2 METHOD:jan_ken_pon_paper_paper_draw. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. re_winner_act = o_game_1->jan_ken_pon( im_hand_player_1 = o_game_1->c_hand_paper im_hand_player_2 = o_game_1->c_hand_paper ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = space msg = 'Paper x Paper - Draw' * level = ). ENDMETHOD. "JAN_KEN_pon_paper_paper_draw METHOD: jan_ken_pon_sciss_rock_p2. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. re_winner_act = o_game_1->jan_ken_pon( im_hand_player_1 = o_game_1->c_hand_scissors im_hand_player_2 = o_game_1->c_hand_rock ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_2 msg = 'Scissors x Rock - P2 win' * level = ). ENDMETHOD. "JAN_KEN_pon_sciss_rock_p2 METHOD: jan_ken_pon_sciss_sciss_draw. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. re_winner_act = o_game_1->jan_ken_pon( im_hand_player_1 = o_game_1->c_hand_scissors im_hand_player_2 = o_game_1->c_hand_scissors ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = space msg = 'Scissors x Scissors - draw' * level = ). ENDMETHOD. "JAN_KEN_pon_sciss_sciss_draw METHOD: jan_ken_pon_sciss_paper_p1. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. re_winner_act = o_game_1->jan_ken_pon( im_hand_player_1 = o_game_1->c_hand_scissors im_hand_player_2 = o_game_1->c_hand_paper ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_1 msg = 'Scissors x Paper - P1 win' * level = ). ENDMETHOD. "JAN_KEN_pon_sciss_paper_p1 METHOD: jan_ken_pon_1hand_win_p1_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CALL METHOD: jan_ken_pon_rock_sciss_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_1 msg = 'P1 Win: Rock x Scissors' * level = ). CALL METHOD: jan_ken_pon_sciss_paper_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_1 msg = 'P1 Win: Scissors x Paper' * level = ). CALL METHOD: jan_ken_pon_paper_rock_p1. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_1 msg = 'P1 Win: Paper x Rock' * level = ). ENDMETHOD. "JAN_KEN_pon_p1_win_p1_win METHOD: jan_ken_pon_2hand_win_p2_win. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CALL METHOD: jan_ken_pon_rock_paper_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_2 msg = 'P2 Win: Rock x Paper' * level = ). CALL METHOD: jan_ken_pon_sciss_rock_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_2 msg = 'P2 Win: Scissors x Rock' * level = ). CALL METHOD: jan_ken_pon_paper_sciss_p2. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = o_game_1->v_player_2 msg = 'P2 Win: Paper x Scissors' * level = ). ENDMETHOD. "JAN_KEN_pon_p2_win_p2_win METHOD: jan_ken_pon_draw_game_draw. DATA re_winner_act TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. CALL METHOD: jan_ken_pon_rock_rock_draw. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = space msg = 'Draw Game: Rock x Rock' * level = ). CALL METHOD: jan_ken_pon_sciss_sciss_draw. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = space msg = 'Draw Game: Scissors x Scissors' * level = ). CALL METHOD: jan_ken_pon_paper_paper_draw. re_winner_act = o_game_1->get_winner( ). cl_aunit_assert=>assert_equals( act = re_winner_act exp = space msg = 'Draw Game: Paper x Paper' * level = ). ENDMETHOD. "JAN_KEN_pon_draw_game_draw ENDCLASS. "Abap_Unit_Testclass ABAP method CONSTRUCTOR. me->v_player_1 = im_player_1. me->v_player_2 = im_player_2. endmethod. METHOD GENERATE_RANDOM_HAND. DATA: l_v_random_number TYPE int4, l_v_residual TYPE i. DATA: l_v_string_current_time TYPE string, l_v_int_current_time TYPE int4. DATA: l_o_random TYPE REF TO cl_random_number. CREATE OBJECT l_o_random. CONCATENATE sy-uzeit(2) sy-uzeit+2(2) sy-uzeit+4(2) INTO l_v_string_current_time. TRY . l_v_int_current_time = l_v_string_current_time. ENDTRY. CALL METHOD l_o_random->if_random_number~init EXPORTING i_seed = l_v_int_current_time. CALL METHOD l_o_random->if_random_number~get_random_int EXPORTING i_limit = 10 RECEIVING r_random = l_v_random_number. l_v_residual = l_v_random_number MOD 3. CASE l_v_residual. WHEN 0. re_v_random_hand = c_hand_scissors. WHEN 1. re_v_random_hand = c_hand_rock. WHEN 2. re_v_random_hand = c_hand_paper. ENDCASE. ENDMETHOD. METHOD GET_WINNER. IF v_last_winner = me->v_player_1. re_winner = me->v_player_1. ELSEIF v_last_winner = me->v_player_2. re_winner = me->v_player_2. ELSE. re_winner = space. ENDIF. ENDMETHOD. METHOD GET_WINNER_OF_HAND. * * IF im_v_loser_hand = c_hand_rock. * re_v_winner_hand = c_hand_paper. * * ELSEIF im_v_loser_hand = c_hand_paper. * re_v_winner_hand = c_hand_scissors. * * ELSEIF im_v_loser_hand = c_hand_scissors. * re_v_winner_hand = c_hand_rock. * ELSE. * " TODO: ABAP101 Easter Egg: raise EXCEPTION and create unit test to test it ;-) * ENDIF. ENDMETHOD. method JAN_KEN_PON. *re_winner = '?'. CASE im_hand_player_1. " Rock WHEN c_hand_rock. CASE im_hand_player_2. WHEN c_hand_rock. " Rock x Rock re_winner = space. WHEN c_hand_paper. "; Rock x Paper re_winner = v_player_2. WHEN c_hand_scissors. " Rock x Scissors re_winner = v_player_1. WHEN OTHERS. " TODO: raise exception ENDCASE. " Paper WHEN c_hand_paper. CASE im_hand_player_2. WHEN c_hand_rock. " Paper x Rock re_winner = v_player_1. WHEN c_hand_paper. " Paper x Paper re_winner = space. WHEN c_hand_scissors. " Paper x Scissors re_winner = v_player_2. WHEN OTHERS. " TODO: raise exception ENDCASE. " Scissors WHEN c_hand_scissors. CASE im_hand_player_2. WHEN c_hand_rock. " Scissors x Rock re_winner = v_player_2. WHEN c_hand_paper. " Scissors x Paper re_winner = v_player_1. WHEN c_hand_scissors. " Scissors x Scissors re_winner = space. WHEN OTHERS. " TODO: raise exception ENDCASE. WHEN OTHERS. " TODO: raise exception ENDCASE. IF re_winner = v_player_1. v_last_winner = v_player_1. ENDIF. IF re_winner = v_player_2. v_last_winner = v_player_2. ENDIF. endmethod. METHOD PRINT_HAND. CASE im_v_hand_type. WHEN c_hand_rock. CALL METHOD print_hand_rock. WHEN c_hand_paper. CALL METHOD print_hand_paper. WHEN c_hand_scissors. CALL METHOD print_hand_scissors. ENDCASE. ENDMETHOD. METHOD PRINT_HAND_PAPER. NEW-LINE. WRITE ' ``````````````````'. NEW-LINE. WRITE ' ````````````````````'.NEW-LINE. WRITE ' ````````````````````.'.NEW-LINE. WRITE ' ```````````````````....'.NEW-LINE. WRITE ' ````````````````````.....'.NEW-LINE. WRITE ' ``````````````````````````````......,'.NEW-LINE. WRITE ' ````````````.````````````.``````.....,,,'.NEW-LINE. WRITE ' ``````````````..``````````............,,,,'.NEW-LINE. WRITE ' ```````````````````````````..............,,,,.`'.NEW-LINE. WRITE ' `````````....````````..``.................,,,,.` '.NEW-LINE. WRITE ' `.........,,......```........`............,,,.` '.NEW-LINE. WRITE ' .,,,,,,,,...................`....,,,,.,,,,.` '.NEW-LINE. WRITE ' `.,,,.` `....................,,,,,,,,,.` '.NEW-LINE. WRITE ' .................`...,,,,,,,.` '.NEW-LINE. WRITE ' `.`...............`..,,,,,,.` '.NEW-LINE. WRITE ' `````.................,,,.` '.NEW-LINE. WRITE ' ````.................,,,` '.NEW-LINE. WRITE ' ```..................,,. '.NEW-LINE. WRITE ' `````.........`````...,. '.NEW-LINE. WRITE ' `````....`...``````...,` '.NEW-LINE. WRITE ' ``.```....``````````..,. '.NEW-LINE. WRITE ' ```........`.```````..,. '.NEW-LINE. WRITE ' ```..,....``````````..,,` '.NEW-LINE. WRITE ' ```.,;,..``````````..,,` '.NEW-LINE. WRITE ' ```..:,...`..``````..,,` '.NEW-LINE. WRITE ' `....:,.......`````..,,` '.NEW-LINE. WRITE ' `..,,,``.::.........,.` '.NEW-LINE. WRITE ' `...,,.`.,,...,,....,. '.NEW-LINE. WRITE ' `...,,.....``.,,``..,` '.NEW-LINE. WRITE ' `..,,.....```..``...` '.NEW-LINE. WRITE '`...,....,..........` '.NEW-LINE. WRITE '...,....,..........` '.NEW-LINE. WRITE '.,,,...,....,....,` '.NEW-LINE. WRITE '.,:...,,...,.....` '.NEW-LINE. WRITE ' ....,:...,...,.` '.NEW-LINE. WRITE '`...,:..,,..,,. '.NEW-LINE. WRITE '`..,:...,``..` '.NEW-LINE. WRITE '..,,,.,,` '.NEW-LINE. WRITE '`,.`.,,` '.NEW-LINE. NEW-LINE. ENDMETHOD. METHOD PRINT_HAND_ROCK. WRITE: ' ````` '. NEW-LINE. WRITE: ' `...```` '. NEW-LINE. WRITE: ' ...`````` '. NEW-LINE. WRITE: ' `..```````` '. NEW-LINE. WRITE: ' `.`````..```` '. NEW-LINE. WRITE: ' `..`````...``` '. NEW-LINE. WRITE: ' `..````.....```` '. NEW-LINE. WRITE: ' `.......,.,,..```` '. NEW-LINE. WRITE: ' .,...,,::::,..````` '. NEW-LINE. WRITE: '`,:,....:,:;,..`````` '. NEW-LINE. WRITE: '.,::,......,,..``````` '. NEW-LINE. WRITE: ',,:::,,......``````````` '. NEW-LINE. WRITE: ',:::;::,..``````````````` '. NEW-LINE. WRITE: '`::,........`````````````` '. NEW-LINE. WRITE: '`,...........```````.```````` '. NEW-LINE. WRITE: ' ,,..........`..```..`.```````` '. NEW-LINE. WRITE: ' .,,,...,,,,............````````` '. NEW-LINE. WRITE: ' ,,,,,,,,,,,,...........`````````` '. NEW-LINE. WRITE: ' `..,,,.,,,,,,...........`````````` '. NEW-LINE. WRITE: ' .,,,,,,,,,,,......`````````` '. NEW-LINE. WRITE: ' `,,,,,,,,,,,......`````````` '. NEW-LINE. WRITE: ' ...,,,,,,,,,,....`````````` '. NEW-LINE. WRITE: ' `,,,,,,,,,,....`````````` '. NEW-LINE. WRITE: ' .,:,,,,,,,.....`````...``'. NEW-LINE. WRITE: ' .,::,,,,,,.......````...'. NEW-LINE. WRITE: ' `,,:,,,,,,,............'. NEW-LINE. WRITE: ' `,,,,,,,,,,...........'. NEW-LINE. WRITE: ' `,,,,,,,,,,,.........'. NEW-LINE. WRITE: ' `,,,,,,,,,,,,.......'. NEW-LINE. WRITE: ' `,,,,,,,,,,,,......'. NEW-LINE. WRITE: ' `,,,,,,,,,,,,,,,..'. NEW-LINE. WRITE: ' `,,,,,,,,,,,,,,,.'. NEW-LINE. WRITE: ' `,,,,,,,,,,,,,,,'. NEW-LINE. WRITE: ' .,,,,,,,,,,,,,'. NEW-LINE. ENDMETHOD. method PRINT_HAND_SCISSORS. WRITE: ' ..` '. NEW-LINE. WRITE: ' .,.` '.NEW-LINE. WRITE: ' `,..` '.NEW-LINE. WRITE: ' ...`` '.NEW-LINE. WRITE: ' `,.`` '.NEW-LINE. WRITE: ' `...`` '.NEW-LINE. WRITE: ' ...`` '.NEW-LINE. WRITE: ' `..`` '.NEW-LINE. WRITE: ' `,..`` '.NEW-LINE. WRITE: ' .,.`` '.NEW-LINE. WRITE: ' `...`` ` '.NEW-LINE. WRITE: ' `,.``,..`` .,.` '.NEW-LINE. WRITE: ' .,,.....``` .,..` '.NEW-LINE. WRITE: ' `.,.``,,,.`..``` `....` '.NEW-LINE. WRITE: ' `,,,,,,,,.``.``` `,..`` '.NEW-LINE. WRITE: ' .,,,:,..,..`````` `....`` '.NEW-LINE. WRITE: ' .,,,,:...,.`````` .,,..`` '.NEW-LINE. WRITE: ' .,,,,,,,,,:...```` `....``` ' .NEW-LINE. WRITE: ' .,,..,,,,,,:,..`...`....```` '.NEW-LINE. WRITE: ' .,,..,,.,:,,...,........```` ' .NEW-LINE. WRITE: ' `,,..,,:.,:,............```` ' .NEW-LINE. WRITE: ' `,,...,:;'';:,.```....`````` '.NEW-LINE. WRITE: ' .,..,,,:'''';,.``.,..````` '.NEW-LINE. WRITE: ' .,,,,,,,;'';;:,.```...```` '.NEW-LINE. WRITE: ' .,,,,.,,::::,:..```...``` '.NEW-LINE. WRITE: ' `,,,,...,,:,,,,,.```````` '.NEW-LINE. WRITE: ' `.,,,,...,,,,,,,,,.````.`` ' .NEW-LINE. WRITE: ' .,,,,,,...,,,,,.....``````` ' .NEW-LINE. WRITE: ' `,,,,,,,,..,,,,,......````` ' .NEW-LINE. WRITE: '.,,,,,,,,...,,,.....`.````` ' .NEW-LINE. WRITE: ',,,,,,,,......,....``````` ' .NEW-LINE. WRITE: ',,,,,,,...........`````` ' .NEW-LINE. WRITE: '.................`````` ' .NEW-LINE. WRITE: '..............`.`````` ' .NEW-LINE. WRITE: '.............`````` ' .NEW-LINE. WRITE: '...........`````` ' .NEW-LINE. WRITE: '..........````` ' .NEW-LINE. WRITE: '.....`.``````` ' .NEW-LINE. WRITE: '....````````` ' .NEW-LINE. WRITE: '....``````` '.NEW-LINE. WRITE: '..```````` ' . NEW-LINE. WRITE: '```````` '.NEW-LINE. endmethod. *&---------------------------------------------------------------------* *& Report Z_ABAP101_JAN_KEN_PON *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT z_abap101_jan_ken_pon. CONSTANTS: l_c_user TYPE z_abap101_jan_ken_pon_players VALUE 'You'. DATA: o_jan_ken_pon_game TYPE REF TO z_cl_abap101_jan_ken_pon. DATA: v_random_hand TYPE z_if_abap101_jan_ken_pon_types=>cty_hand. DATA: v_winner TYPE z_if_abap101_jan_ken_pon_types=>cty_player_name. PARAMETERS: p_hand_1 TYPE z_abap101_jan_ken_pon_hands OBLIGATORY. START-OF-SELECTION. CREATE OBJECT o_jan_ken_pon_game EXPORTING im_player_1 = l_c_user im_player_2 = 'ABAP101'. CALL METHOD z_cl_abap101_jan_ken_pon=>generate_random_hand RECEIVING re_v_random_hand = v_random_hand. CALL METHOD o_jan_ken_pon_game->jan_ken_pon EXPORTING im_hand_player_1 = p_hand_1 im_hand_player_2 = v_random_hand RECEIVING re_winner = v_winner. CALL METHOD o_jan_ken_pon_game->get_winner RECEIVING re_winner = v_winner. IF v_winner = space. WRITE: 'Draw!' COLOR 3 . ELSE. IF v_winner = l_c_user. WRITE: v_winner RIGHT-JUSTIFIED COLOR 5 NO-GAP, ' won!!' COLOR 5. ELSE. WRITE: v_winner RIGHT-JUSTIFIED COLOR 6 NO-GAP, ' won!!' COLOR 6. ENDIF. ENDIF. WRITE /. " Your Hand WRITE: 'Your Hand' COLOR 4. NEW-LINE. CALL METHOD z_cl_abap101_jan_ken_pon=>print_hand EXPORTING im_v_hand_type = p_hand_1. " ABAP AS (ABAP101) Hand WRITE: 'ABAP101 Hand' COLOR 4. NEW-LINE. CALL METHOD z_cl_abap101_jan_ken_pon=>print_hand EXPORTING im_v_hand_type = v_random_hand.