我刚开始学习Java,我很新.
我正在尝试用Java创建一个非常简单的基于文本的RPG游戏.
我创建了一个名为"敌人"的类.该类包含某些变量,例如敌人姓名的字符串,敌人健康的整数,伤害等等.有了这个"敌人"级别,我就会创造出特定的敌人.例如,使用"敌人"类,我将制造一个僵尸敌人,并为上述变量分配某些值.
我希望能够做的是随机遇到敌人.例如,假设我有一个僵尸敌人,巨型蜘蛛敌人和一个刺客敌人,每个都有值分配给"敌人"类中的变量,我想有一个随机的战斗遭遇.僵尸似乎有45%的时间,蜘蛛25%的时间,而刺客,30%的时间.
我该怎么做或类似的东西?可能有任何教程吗?
对不起,如果我没有多大意义......
我最近学习了固定格式RPG IV中的loacal程序及其在D-Specs和P-Specs部分中的实现或省略D-Specs定义的定义.
根据IBM文档,如果我省略D中的定义,编译器将自动从过程接口生成必要的定义,然后是我实现我的过程的P-Spec.
现在我想知道两次定义过程接口有什么好处?是否有任何好处(几乎)相同的代码编写两次(在P-Spec的顶部和下面的D-Specs中)或者这只是程序员有一个有意义的地方来定义输入/输出参数的选项为程序?
提前致谢
嘿我正在尝试重新创建一个包含大约900万条记录的表,当我这样做时,我想首先在表上删除/暂停索引,然后重新创建/启动它们.
我们正在运行IBMI 7.3.
我已经创建了下面的存储过程来执行此操作.但是一旦它命中Drop索引语句,它就会"崩溃/停止",但不会出错.
任何人都知道如何做到这一点?
CREATE PROCEDURE YXDB.GENERATE_SEARCH_DATA()
LANGUAGE SQL MODIFIES SQL DATA
SET OPTION DBGVIEW=*SOURCE,COMMIT=*NONE,OUTPUT=*PRINT
P1: BEGIN
DECLARE is_there_index INT;
DECLARE zero_index INT;
DECLARE first_index INT;
DECLARE next_index INT;
DECLARE pre_phonetic_string varchar(100);
DECLARE post_phonetic_string varchar(100);
DECLARE search_string_actionable varchar(100);
DECLARE END_TABLE INT DEFAULT 0;
DECLARE ADDRESS_KEY INT;
DECLARE ADDRESS_INFO VARCHAR(500);
DECLARE ACTIVE INT;
DECLARE C1 CURSOR FOR
select distinct faadrnr,
info,
(case
WHEN FKRELTYP like 'FFADRESSE%' AND FKKNTNR = 0
THEN (select 1 from dual)
WHEN FKRELTYP like 'SMOLEVADR%' AND …Run Code Online (Sandbox Code Playgroud) 我正在运行 Laravel 5.2,在 Windows 8.1 上使用 XAMPP 和 php 7.2,我正在尝试使用带有 sqlite 数据库的 laravel auth 注册表来注册用户。但是,当我尝试将新记录插入表时users,出现错误。
SQLSTATE[HY000]:一般错误:1 没有这样的表:用户
当我迁移数据库时,它会创建用户表。但是当我尝试users使用注册表在表中插入新记录时,它会尝试访问user表。所以我user在数据库中创建了表,它工作正常,但记录插入到users表中而不是user表中。
移民
public function up(){
Schema::create('users', function (Blueprint $table) {
$table->increments('user_id');
$table->string('name');
$table->string('role');
$table->string('username');
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
public function down(){
Schema::drop('users');
}
Run Code Online (Sandbox Code Playgroud)
用户模型
class User extends Authenticatable{
protected $primaryKey = 'user_id';
protected $fillable = [
'name', 'role', 'username', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
}
Run Code Online (Sandbox Code Playgroud)
身份验证控制器 …
我想从另一个文件(FILE1)访问具有"最高日期"键的文件(FILE2).
我的程序没有使用SQL,我不想更改File-Typ,
如何从FILE2获取最高日期以在FILE1上建立链?
我的代码看起来像lide:
KYFILE2.NUMBER = FILE1.NUMBER;
KYFILE2.DATE = HIGHEST VALUE (FILE1.DATE);
KYFILE2.TIME = HIGHEST VALUE (FILE1.TIME);
EXSR CHAIN TO FILE2;
Run Code Online (Sandbox Code Playgroud) 我正在测试一个将参数从CL传递到SQLRPGLE的新程序
我声明了总共16个变量并使用CHGVAR来设置值以测试参数的传递.
PGM
DCL VAR(&COMPFR) TYPE(*CHAR) LEN(3)
DCL VAR(&COMPTO) TYPE(*CHAR) LEN(3)
DCL VAR(&LOCFR) TYPE(*CHAR) LEN(4)
DCL VAR(&LOCTO) TYPE(*CHAR) LEN(4)
DCL VAR(&CLSTFR) TYPE(*CHAR) LEN(1)
DCL VAR(&CLSTTO) TYPE(*CHAR) LEN(1)
DCL VAR(&CUSTFR) TYPE(*CHAR) LEN(7)
DCL VAR(&CUSTTO) TYPE(*CHAR) LEN(7)
DCL VAR(&ITEMFR) TYPE(*CHAR) LEN(20)
DCL VAR(&ITEMTO) TYPE(*CHAR) LEN(20)
DCL VAR(&CLDTFR) TYPE(*CHAR) LEN(8)
DCL VAR(&CLDTTO) TYPE(*CHAR) LEN(8)
DCL VAR(&SCDTFR) TYPE(*CHAR) LEN(8)
DCL VAR(&SCDTTO) TYPE(*CHAR) LEN(8)
DCL VAR(&CMDTFR) TYPE(*CHAR) LEN(8)
DCL VAR(&CMDTTO) TYPE(*CHAR) LEN(8)
CHGVAR VAR(&COMPFR) VALUE('2')
CHGVAR VAR(&COMPTO) VALUE('2')
CHGVAR VAR(&LOCFR) VALUE('6')
CHGVAR VAR(&LOCTO) VALUE('6')
CHGVAR …Run Code Online (Sandbox Code Playgroud) 我有许多CL程序,这些程序当前正在将文件FTP发送到生产服务器。
我们已经引入了用于测试目的的新iSeries测试服务器,并且这些程序需要从该新服务器上运行。但是,从测试服务器运行时的目标FTP地址应该不同。文件需要发送到相应的测试服务器。
为此,添加了一个简单的程序调用,如下所示:
PGM PARM(&FTPERR)
DCL VAR(&SUCCES) TYPE(*CHAR) LEN(1)
DCL VAR(&FTPERR) TYPE(*CHAR) LEN(1)
DCL VAR(&TARGIP) TYPE(*CHAR) LEN(20) VALUE(' ')
DCL VAR(&ATTEMP) TYPE(*DEC) LEN(2 0) VALUE(0)
CALL PGM(GETFTPRPG) PARM('FTPMRCL' &TARGIP)
Run Code Online (Sandbox Code Playgroud)
从上面可以看出,GETFTPRPG程序是新引入的程序调用,它基于程序名和程序运行所在的服务器检索IP地址。
这很好,但是问题在于程序中声明的其他变量(具体来说,是程序中声明的第一个Decimal变量)正在更改。在上面的示例中,&ATTEMP变量的值更改为04。有人可以建议可能的原因吗?
我正在验证 codeigniter 中的表单。如果用户没有正确填写表单,则页面不应重定向到任何其他页面,而是在每个输入字段上显示错误。这是我的表单代码:
<?php echo $this->session->flashdata('errors');?>
<form action="<?php echo base_url() ?>detail/travel" method="post">
<input type="text" name="departure">
<input type="text" name="destination">
<input type="text" name="name">
<input type="text" name="cell">
</form>
Run Code Online (Sandbox Code Playgroud)
这是我的方法代码:
function search_travel(){
if($_POST){
$config = array(
array(
'field'=>'departure',
'label'=>'departure',
'rules'=>'trim|required|alpha'
),
array(
'field'=>'destination',
'label'=>'destination',
'rules'=>'trim|required|alpha'
),
array(
'field'=>'name',
'label'=>'name',
'rules'=>'trim|required|alpha'
),
array(
'field'=>'cell',
'label'=>'cell no',
'rules'=>'trim|required'
)
);
$this->load->library('form_validation');
$this->load->helper(array('form', 'url'));
$this->form_validation->set_rules($config);
if($this->form_validation->run() == FALSE){
$this->session->set_flashdata('errors', validation_errors());
redirect(base_url());
}
}
Run Code Online (Sandbox Code Playgroud)
}
问题是通过使用 set_flashdata 我不能使用 form_error 函数和 set_value 函数。这个问题有没有其他解决办法???
我想从rpgle程序返回字符串.
/free
return 'this is simple text';
/end-free
Run Code Online (Sandbox Code Playgroud)
可以请给我代码片段.
我试图解决的情况是:对于表中的每一行,可能存在来自第二个表的另一行,因此我需要来自第一个表的行的所有数据和来自第二个表的行的数据(如果存在).
我知道我可以使用数据结构作为主变量来收集表中一行的所有数据.所以,我的选择是这样的:
select
t1.*
,t2.*
into
:dst1
,:dst2
from table1 t1
left join table2 t2 on t2.key=t1.key
;
Run Code Online (Sandbox Code Playgroud)
其中dst1和dst2分别是数据结构,如table1和table2记录的格式.很简单.
现在,重点是当第二个表中不存在该键的行时如何捕获空结果.在这种情况下,我希望初始化相应的数据结构,但是合并一次只能在一个字段上工作,而我无法找到另一个解决方案.
有没有办法获得这个结果?
任何帮助,将不胜感激!
谢谢
程序A调用程序B。我正在基于程序B中的文件A创建全局临时表。
我必须打开并阅读程序A中的临时表。我在F Spec中使用EXTFILE操作码来编译程序A。
fFILEA if e disk extfile(wrk_filnam)
f usropn
/free
wrk_filnam = 'QTEMP/TEMP_TABLE'
open FILEA
/end-free
Run Code Online (Sandbox Code Playgroud)
当我返回到程序A和打开文件A时,由于使用新的格式级别标识符创建了临时表,因此出现级别检查错误。
有解决方法吗?如果我可以使用CRTDUPOBJ,那就太好了。
我正在基于业务逻辑在 RPGLE 程序中加载数组,这可能会导致数组中的数据重复。
我想首先知道如何检测重复。
最后我想知道如何删除数组中的重复项。
因此,假设表 ##TAB 有一列 #VALUE,其中包含“SDM”和“LB”作为条目。列大小为 12 个字符。我想使用固定格式 RPG 查询表,并稍后在 IF 条件下进行比较。逻辑很简单,但我不确定语法。
如果它是自由格式,我可以简单地将记录放入游标中,在循环中获取数据,然后在获得匹配的记录时离开。但是,我不确定我们是否可以使用固定格式的 SQL,否则我将不得不做一个链(仍然不知道语法)。
exec sql
Declare C1 cursor for
Select #VALUE from ##TAB;
exec sql
Open C1;
Dou sqlcod <> 0;
exec sql
Fetch C1 INTO :valueRes;
If (valueRes <> userVal); // userVal is what we get from user
Leave; //or set some flag to 0 to indicate
Endif;
Enddo;
exec sql
Close C1;
Run Code Online (Sandbox Code Playgroud)
或者我们可以通过子例程来完成,并返回 true/false 或 1/0 来指示是否找到记录。
在发布答案时,请同时包含变量声明。