楼主: alexyang1223

用ABAP作游戏开发?

[复制链接]
论坛徽章:
0
51#
发表于 2009-4-12 02:24 | 只看该作者
这个都搞得出来...牛...

使用道具 举报

回复
论坛徽章:
1
CTO参与奖
日期:2009-03-23 11:00:18
52#
发表于 2009-4-12 11:05 | 只看该作者
一群牛人

使用道具 举报

回复
论坛徽章:
4
2010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:19:07参与SAP云计算之旅活动纪念
日期:2011-05-17 13:35:45ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
53#
发表于 2009-4-17 11:33 | 只看该作者
CALL FUNCTION 'QF05_RANDOM_INTEGER' 这里有问题。。。不知道怎么搞的。是不是有什么没激活。。。
报错
发生了什么?
    Error in the ABAP Application Program

    The current ABAP program "Z_GAME_DEMO4" had to be terminated because it
    come across a statement that unfortunately cannot be executed.
错误分析
    The system attempted to use dynpro 0100 in program "Z_GAME_DEMO4".
    This dynpro does not exist.

使用道具 举报

回复
论坛徽章:
0
54#
发表于 2009-4-17 16:44 | 只看该作者
原帖由 julymusic 于 2009-4-17 11:33 发表
CALL FUNCTION 'QF05_RANDOM_INTEGER' 这里有问题。。。不知道怎么搞的。是不是有什么没激活。。。
报错
发生了什么?
    Error in the ABAP Application Program

    The current ABAP program "Z_GAME_DEMO4" had to be terminated because it
    come across a statement that unfortunately cannot be executed.
错误分析
    The system attempted to use dynpro 0100 in program "Z_GAME_DEMO4".
    This dynpro does not exist.


You need to do this:
* To install TETRIS:
* 1) Create program and place ALL this text in it.
* 2) Create standart SCREEN 100 and insert this part
anyway read the instruction and you will find out....

使用道具 举报

回复
论坛徽章:
4
2010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:19:07参与SAP云计算之旅活动纪念
日期:2011-05-17 13:35:45ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
55#
发表于 2009-4-17 17:10 | 只看该作者
1. what's TETRIS and how to install TETRIS?
2.what should be noted when Create standart SCREEN 100 ?

使用道具 举报

回复
论坛徽章:
0
56#
发表于 2009-4-17 17:23 | 只看该作者
原帖由 julymusic 于 2009-4-17 17:10 发表
1. what's TETRIS and how to install TETRIS?
2.what should be noted when Create standart SCREEN 100 ?


No1>TETRIS  just the name of this game and you do not have to do anything

No2>you need this code when you create the standart SCREEN 100 and there is more step...please read the code you will find out!   good luck!!!

PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
MODULE EXX AT EXIT-COMMAND.
MODULE USER_COMMAND_0100.

使用道具 举报

回复
论坛徽章:
14
2010新春纪念徽章
日期:2010-01-04 08:33:082014年世界杯参赛球队: 科特迪瓦
日期:2014-07-11 09:40:192014年世界杯参赛球队: 英格兰
日期:2014-07-03 10:38:08马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09劳斯莱斯
日期:2014-01-03 10:45:56ITPUB社区12周年站庆徽章
日期:2013-10-08 14:56:08蛋疼蛋
日期:2013-05-24 18:10:04迷宫蛋
日期:2012-06-12 09:46:142012新春纪念徽章
日期:2012-01-04 11:53:54
57#
发表于 2010-12-8 15:20 | 只看该作者

回复 #1 alexyang1223 的帖子

今天无聊,写了一个贪吃蛇,http://blog.csdn.net/fei2115958/archive/2010/12/06/6058285.aspx
呵呵

使用道具 举报

回复
论坛徽章:
20
58#
发表于 2010-12-8 16:38 | 只看该作者

回复 #57 fei2115958 的帖子

厉害阿

使用道具 举报

回复
论坛徽章:
12
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152011新春纪念徽章
日期:2011-02-18 11:43:352010广州亚运会纪念徽章:三项全能
日期:2010-11-22 15:42:14ITPUB9周年纪念徽章
日期:2010-10-08 09:28:532010新春纪念徽章
日期:2010-03-01 11:08:292009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:羊
日期:2009-03-10 21:29:35奥运会纪念徽章:拳击
日期:2008-08-19 08:10:34奥运会纪念徽章:棒球
日期:2008-08-18 14:03:16
59#
发表于 2010-12-8 17:31 | 只看该作者
ABAP乱搞_贪吃蛇 收藏
*&---------------------------------------------------------------------*
*& Report  ZSNAKE
*&
*&---------------------------------------------------------------------*
*&
*& Just for fun
*&---------------------------------------------------------------------*

REPORT  zsnake.

DATA: rf_gui_timer TYPE REF TO cl_gui_timer.

CONSTANTS: c_up TYPE i VALUE 2,
           c_down TYPE i VALUE 4,
           c_left TYPE i VALUE 6,
           c_right TYPE i VALUE 8.

DATA: BEGIN OF i_snake OCCURS 0,
        x TYPE i,
        y TYPE i,
      END OF i_snake.

DATA: v_direction TYPE i VALUE c_right,
      v_isfood TYPE c,
      w_food LIKE LINE OF i_snake.


*----------------------------------------------------------------------*
*       CLASS lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: on_finished FOR EVENT finished OF cl_gui_timer
       IMPORTING sender.

ENDCLASS. "lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
*CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*

CLASS lcl_event_handler IMPLEMENTATION.
  METHOD on_finished.

    PERFORM frm_list_clear.
    PERFORM frm_snake_move.
    IF v_isfood IS INITIAL.
      PERFORM frm_food_add.
      v_isfood = 'X'.
    ENDIF.
    PERFORM frm_snake_out.

* Start timer again
    sender->run( ).

  ENDMETHOD.                    "on_finished
ENDCLASS.                    "lcl_event_handler IMPLEMENTATION

PARAMETERS: seconds TYPE i DEFAULT 1.

AT USER-COMMAND.
  CASE sy-ucomm.
    WHEN 'BACK' OR 'UP' OR 'EXIT'.
      LEAVE PROGRAM.
    WHEN 'DOUP'.
      CHECK v_direction NE c_down.
      v_direction = c_up.
    WHEN 'DODOWN'.
      CHECK v_direction NE c_up.
      v_direction = c_down.
    WHEN 'DOLEFT'.
      CHECK v_direction NE c_right.
      v_direction = c_left.
    WHEN 'DORIGHT'.
      CHECK v_direction NE c_left.
      v_direction = c_right.
  ENDCASE.

START-OF-SELECTION.

  SET PF-STATUS 'STATUS_0'.

  PERFORM frm_build_verge.
  PERFORM frm_list_clear.
  PERFORM frm_snake_init.

  CREATE OBJECT rf_gui_timer.
  SET HANDLER lcl_event_handler=>on_finished FOR rf_gui_timer.
  rf_gui_timer->interval = seconds.
  CALL METHOD rf_gui_timer->run.

  PERFORM frm_snake_out.


*&---------------------------------------------------------------------*
*&      Form  frm_random_food
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_random_food CHANGING lw_food LIKE LINE OF i_snake.
  DATA: lv_random TYPE i.
  CALL FUNCTION 'QF05_RANDOM_INTEGER'
    EXPORTING
      ran_int_max   = 60
      ran_int_min   = 2
    IMPORTING
      ran_int       = lv_random
    EXCEPTIONS
      invalid_input = 1
      OTHERS        = 2.

  lw_food-x = lv_random.
  CALL FUNCTION 'QF05_RANDOM_INTEGER'
    EXPORTING
      ran_int_max   = 20
      ran_int_min   = 4
    IMPORTING
      ran_int       = lv_random
    EXCEPTIONS
      invalid_input = 1
      OTHERS        = 2.

  lw_food-y = lv_random.

ENDFORM.                    "frm_random_food

*&---------------------------------------------------------------------*
*&      Form  frm_food_add
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_food_add.
  DATA: lw_food LIKE LINE OF i_snake.
  DO.
    PERFORM frm_random_food CHANGING lw_food.
    LOOP AT i_snake WHERE x = lw_food-x AND y = lw_food-y.
      EXIT.
    ENDLOOP.
    IF sy-subrc NE 0.
      EXIT.
    ENDIF.
  ENDDO.
  w_food = lw_food.
ENDFORM.                    "frm_food_add

*&---------------------------------------------------------------------*
*&      Form  frm_snake_out
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_snake_out.
  DATA: lv_size TYPE i.
  DESCRIBE TABLE i_snake LINES lv_size.
  LOOP AT i_snake.
    SKIP TO LINE i_snake-y.
    IF sy-tabix NE lv_size.
      WRITE AT i_snake-x 'o'.
    ELSE.
      WRITE AT i_snake-x 'O'.
    ENDIF.
  ENDLOOP.
  IF NOT w_food IS INITIAL.
    SKIP TO LINE w_food-y.
    WRITE AT w_food-x '@'.
  ENDIF.
ENDFORM.                    "frm_snake_out

*&---------------------------------------------------------------------*
*&      Form  frm_snake_dead_check
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->LW_SNAKE   text
*----------------------------------------------------------------------*
FORM frm_snake_dead_check USING lw_snake LIKE LINE OF i_snake.
  LOOP AT i_snake WHERE x = lw_snake-x AND y = lw_snake-y.
    EXIT.
  ENDLOOP.
  IF sy-subrc EQ 0.
    MESSAGE 'Game over' TYPE 'I' DISPLAY LIKE 'E'.
    LEAVE TO SCREEN 0.
  ENDIF.
  IF lw_snake-y LE 3 OR lw_snake-y GE 24 OR lw_snake-x LE 1 OR lw_snake-x GE 60.
    MESSAGE 'Game over' TYPE 'I' DISPLAY LIKE 'E'.
    LEAVE TO SCREEN 0.
  ENDIF.
ENDFORM.                    "frm_snake_dead_check
*&---------------------------------------------------------------------*
*&      Form  frm_snake_move
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_snake_move.
  DATA: lv_size TYPE i,
        lv_direction TYPE i,
        lw_snake LIKE LINE OF i_snake.

  DESCRIBE TABLE i_snake LINES lv_size.

  lv_direction = v_direction.
  CASE lv_direction.
    WHEN c_up.
      READ TABLE i_snake INTO lw_snake INDEX lv_size.
      lw_snake-y = lw_snake-y - 1.
      PERFORM frm_snake_dead_check USING lw_snake.
      APPEND lw_snake TO i_snake.
      DELETE i_snake INDEX 1.
    WHEN c_down.
      READ TABLE i_snake INTO lw_snake INDEX lv_size.
      lw_snake-y = lw_snake-y + 1.
      PERFORM frm_snake_dead_check USING lw_snake.
      APPEND lw_snake TO i_snake.
      DELETE i_snake INDEX 1.
    WHEN c_left.
      READ TABLE i_snake INTO lw_snake INDEX lv_size.
      lw_snake-x = lw_snake-x - 1.
      PERFORM frm_snake_dead_check USING lw_snake.
      APPEND lw_snake TO i_snake.
      DELETE i_snake INDEX 1.
    WHEN c_right.
      READ TABLE i_snake INTO lw_snake INDEX lv_size.
      lw_snake-x = lw_snake-x + 1.
      PERFORM frm_snake_dead_check USING lw_snake.
      APPEND lw_snake TO i_snake.
      DELETE i_snake INDEX 1.
  ENDCASE.

  IF lw_snake EQ w_food.
    CLEAR v_isfood.
    CASE lv_direction.
      WHEN c_up.
        lw_snake-y = lw_snake-y - 1.
        PERFORM frm_snake_dead_check USING lw_snake.
        APPEND lw_snake TO i_snake.
      WHEN c_down.
        lw_snake-y = lw_snake-y + 1.
        PERFORM frm_snake_dead_check USING lw_snake.
        APPEND lw_snake TO i_snake.
      WHEN c_left.
        lw_snake-x = lw_snake-x - 1.
        PERFORM frm_snake_dead_check USING lw_snake.
        APPEND lw_snake TO i_snake.
      WHEN c_right.
        lw_snake-x = lw_snake-x + 1.
        PERFORM frm_snake_dead_check USING lw_snake.
        APPEND lw_snake TO i_snake.
    ENDCASE.
  ENDIF.
ENDFORM.                    "frm_snake_move

*&---------------------------------------------------------------------*
*&      Form  frm_init_snake
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_snake_init.
  DATA lv_x TYPE i VALUE 5.
  DO 40 TIMES.
    i_snake-x = lv_x.
    i_snake-y = 5.
    APPEND i_snake.
    lv_x = lv_x + 1.
  ENDDO.
ENDFORM.                    "frm_init_snake

*&---------------------------------------------------------------------*
*&      Form  frm_build_verge
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_build_verge.
  WRITE:/ '############################################################'.
  DO 21 TIMES.
    WRITE AT: 1 '#', 60 '#'.
    NEW-LINE.
  ENDDO.
  WRITE:/ '############################################################'.
ENDFORM.                    "frm_build_verge

*&---------------------------------------------------------------------*
*&      Form  frm_list_clear
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_list_clear.
  DATA: lv_index TYPE i,
        lv_clear TYPE string,
        lv_temp TYPE string VALUE '#                                                          #'.
  lv_index = 4.
  DO 20 TIMES.
    CLEAR: lv_clear.
    READ LINE lv_index LINE VALUE INTO lv_clear.
    IF lv_clear IS NOT INITIAL.
      MODIFY LINE lv_index LINE VALUE FROM lv_temp.
    ENDIF.
    lv_index = lv_index + 1.
  ENDDO.
ENDFORM.                    "frm_list_clear


STATUS_0的定义:

DOUP(F6)       DODOWN(F7)     DOLEFT(F5)     DORIGHT(F8)

使用道具 举报

回复
论坛徽章:
5
2009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:鼠
日期:2009-02-21 14:03:46生肖徽章2007版:虎
日期:2009-03-02 17:11:23祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26
60#
发表于 2010-12-9 12:05 | 只看该作者
原帖由 alexyang1223 于 2008-11-19 16:37 发表
有谁用ABAP在SAP里开发过游戏?
比如俄罗斯方块
或者扫雷之类的。。。。。。。。


太有才了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表