! robotfindskitten
! A Zen Simulation
-! Release 7 / Serial number 130315 / Inform v6.33
+! Release 8 / Serial number 220120 / Inform v6.35
!
! [-] |\_/| http://www.robotfindskitten.org
! (+)=C |o o|__ Leonard Richardson (C) 1997, 2000
-! | | --*--__\ David Griffith (C) 2002 (Inform Edition)
+! | | --*--__\ David Griffith (C) 2002-2022 (Inform Edition)
! OOO C_C(____)
!
!
! Lots more information on robotfindskitten is available at
! http://www.robotfindskitten.org.
!
+! This rendition of robotfindskitten is distributed under the Artistic
+! License 2.0. See the file LICENSE in the robotfindskitten repository
+! or https://opensource.org/licenses/Artistic-2.0 for more information.
!
! In this game, you are Robot (#). Your job is to find Kitten. This
! task is complicated by the existance of various things which are not
! not. Move Robot with the cursor keys, the numeric keypad, or
! using the vi/rogue movement keys. The game ends when robotfindskitten.
! Alternatively, you may end the game by hitting the Esc or Q keys.
-!
-! Developed with Inform 6.21.4 as installed from NetBSD's pkgsrc tree
-! and Frotz 2.42.
-!
!
! Notes:
! 1) More than half of the code is taken up by non kitten items
!
Constant Nonkitten_Max 589;
-Release 7;
-Serial "130315"; ! Presumed release date
+Release 8;
+Serial "220120";
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Global last_message = ""; ! Always show the last-encountered message.
-Global nonkitten_count = Nonkitten_Default;
+Global nonkitten_count;
Array nonkitten_x --> Nonkitten_Max;
Array nonkitten_y --> Nonkitten_Max;
Global Real_Release = 0;
[ Main key;
-
@set_colour Fore_def Back_def;
-! if (MESSAGE_NUM < Nonkitten_Max) {
-! nonkitten_count = MESSAGE_NUM;
-! } else {
-! nonkitten_count = Nonkitten_Default;
-! }
-
- nonkitten_count = Nonkitten_Default;
+ if (MESSAGE_NUM < Nonkitten_Default) {
+ nonkitten_count = MESSAGE_NUM;
+ } else {
+ nonkitten_count = Nonkitten_Default;
+ }
Real_Release = (0-->1)&$03ff;
- Width = $22-->0;
- Height = $24-->0;
+ Width = $21->0;
+ Height = $20->0;
main_menu();
while (true) {
@set_cursor 8 30;
print "Leonard Richardson (C) 1997, 2000";
@set_cursor 9 30;
- print "David Griffith (C) 2002 (Inform Edition)";
+ print "David Griffith (C) 2002-2022 (Inform Edition)";
@set_cursor 10 30;
print " ", MESSAGE_NUM, " different nonkittens!";
Array inbuf -> INBUFSIZE;
[ set_nonkitten_count maxnum val;
-
while (true) {
@erase_window $ffff;
@split_window 5;
[ get_number min max init inbufvar ix cx len val;
-
while (true) {
inbuf->0 = (INBUFSIZE-3);
inbuf->1 = 0;
[ print_about;
-
@erase_window $ffff;
@split_window TopBar;
@set_window 1;
Written originally for the Nerth Pork robotfindskitten contest.^
Reimplemented in Inform by David Griffith (C) 2002.^
^
-This code is freely redistributable. Do with it what you will, but
-don't go about claiming you wrote it. I, David Griffith, retain
-copyright on this program except for the NKIs imported from the master
-(aka POSIX) port.^
+This code is distributed according to the Artistic License 2.0. See
+https://opensource.org/licenses/Artistic-2.0 for more information. I,
+David Griffith, retain copyright on this program except for the NKIs
+imported from the master (aka POSIX) port.^
^
Lots more information on robotfindskitten is available at
http://www.robotfindskitten.org.^
- Lots more comments in the source code.^
- Assorted cleanups in the source code.^
^
-Release 7 / Serial Number 040523^
-Grammatically correct release.^
-- Grammar corrections from the POSIX port added.^
-- More NKIs added (800 total).^
+Release 7 / Serial Number 130320^
+Modular release.^
+- Synchronized NKIs and removed redundancies with the POSIX port.^
+- NKIs now generated from an external file using nki2inf.pl.^
+- NKIs reduced to 723 because of redundancies and recommended deletions.^
+^
+Release 8 / Serial Number 220120^
+- Twenty Year Anniversary release.^
+- Fixed a problem that crashed some interpreters when robotfindskitten.^
+- Fixed a potential problem of wrongly determining screen size.^
+- Now distributed under the Artistic License 2.0.^
^
^
Known Bugs:^
[ print_thoughts;
-
@erase_window $ffff;
@split_window TopBar;
@set_window 1;
[ draw_big_robot x y;
-
if (x == 0)
x = 1;
if (y == 0)
[ draw_big_kitten x y;
-
if (x == 0)
x = 1;
if (y == 0)
[ draw_big_kitten_psycho x y;
-
if (x == 0)
x = 1;
if (y == 0)
Global last_right = false;
[ findkitten key i;
-
@erase_window $ffff;
@split_window TopBar;
@set_window 1;
[ animate_kitten key my_last_right i j junk robot_x anim_finished;
-
switch (key) {
'8', 'J', 129: player_y++;
'2', 'K', 130: player_y--;
if (anim_finished == false) {
j = TopBar - 1;
@set_cursor 1 Width;
- @aread junk 0 10 pause -> junk;
+ @read_char 1 10 pause -> junk;
+ @nop; ! This is for padding.
} else {
style reverse;
draw_object(player_x, player_y, '#');
[ get_random_msg num;
num = random(MESSAGE_NUM);
- while (is_duplicate_msg(num) == true) {
+ while (is_duplicate_msg(num) == true || num > MESSAGE_NUM || num < 1) {
num = random(MESSAGE_NUM);
}
return num;