ABAP游戏:扫雷_SAP刘梦_新浪博客

ABAP游戏:扫雷


代码

*&---------------------------------------------------------------------*
*& Report ZLM_GAME2
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZLM_GAME2 NO STANDARD PAGE HEADING LINE-SIZE 125.
 


INCLUDE .


CONSTANTS:
" >> board cell values
   blank_hidden  TYPE c VALUE '0',
   blank_marked  TYPE c VALUE 'm',
   blank_opened  TYPE c VALUE '.',

   bomb_hidden   TYPE c VALUE '*',
   bomb_marked   TYPE c VALUE 'M',
   bomb_opened   TYPE c VALUE '&',

   "digit_hidden TYPE c VALUE 'A', "  A B C D E F G H
   "digit_marked TYPE c VALUE 'a', "  a b c d e f g h
   "digit_opened TYPE c VALUE '1', "  1 2 3 4 5 6 7 8

   endgame_bomb_boom       TYPE c VALUE 'X',
   endgame_bomb_missmark   TYPE c VALUE '@',
   border                  TYPE c VALUE '#',

" >> game state
   game_in   VALUE '1',
   game_over VALUE '2',
   game_win  VALUE '3'.

DATA:
   board(9999) TYPE c,  " 2D board,  x_size * y_size   borders
   ofs         TYPE i,  " board[ofs] = cell unique ID
   min         TYPE i,  " board[min] .. board[max]
   max         TYPE i,
   rdx         TYPE i,  " = 2   width  of board
   rdy         TYPE i,  " = 2   height of board
   square      TYPE i,  " = x_size * y_size = visible area
   square2     TYPE i,  " =    rdx *    rdy = visible area   border
   range       TYPE i,  " = max - min   1
   rest        TYPE i,  " = square - bomb_cnt = empty cells to invent
   game        TYPE c,  " gamestate  = 1,2,3
   game_size   TYPE c,  " B=Beginner, I=Interm, E=Expert, C=Custom
   game_time(5) TYPE c, " seconds
   b_left(4)   TYPE c.  " unmarked bombs left

"  >> eight directions: North, South, East, West, NE, NW, SE, SW
DATA:  eight_directions TYPE TABLE OF i INITIAL SIZE 8 WITH HEADER LINE .

" >> cells2update list, to track board[] changes
TYPES:
   BEGIN OF celltype,
      offset(4) TYPE c,
      color TYPE c,
   END OF celltype.
DATA: cells2update TYPE TABLE OF celltype INITIAL SIZE 1000 WITH HEADER LINE.

" >> misc
CONSTANTS:
   x_ofs TYPE i VALUE 1,
   y_ofs TYPE i VALUE 5.
DATA:
   game_time1 TYPE timestamp, " game    begin
   game_time2 TYPE timestamp.


" >> high_scores
CONSTANTS:
   database_id_prefix(21) TYPE c VALUE 'ABAPMINESWEEPERSCORES'.
TYPES:
   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值