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.