GW-BASIC, 1086 1035 ไบต์ (โทเค็น)
ในรูปแบบโทเค็นนี่คือ 1,035 ไบต์ (แน่นอนว่ารูปแบบ ASCII นั้นยาวไปหน่อย) คุณจะได้รับแบบฟอร์มโดยใช้SAVE"life
คำสั่งโดยไม่ต้องต่อท้าย",a
ล่าม
10 DEFINT A-Z:DEF SEG=&HB800:KEY OFF:COLOR 7,0:CLS:DEF FNP(X,Y)=PEEK((((Y+25)MOD 25)*80+((X+80)MOD 80))*2)
20 X=0:Y=0
30 LOCATE Y+1,X+1,1
40 S$=INKEY$:IF S$=""GOTO 40
50 IF S$=CHR$(13)GOTO 150
60 IF S$=" "GOTO 130
70 IF S$=CHR$(0)+CHR$(&H48)THEN Y=(Y-1+25)MOD 25:GOTO 30
80 IF S$=CHR$(0)+CHR$(&H50)THEN Y=(Y+1)MOD 25:GOTO 30
90 IF S$=CHR$(0)+CHR$(&H4B)THEN X=(X-1+80)MOD 80:GOTO 30
100 IF S$=CHR$(0)+CHR$(&H4D)THEN X=(X+1)MOD 80:GOTO 30
110 IF S$="c"THEN CLS:GOTO 20
120 GOTO 40
130 Z=PEEK((Y*80+X)*2):IF Z=42 THEN Z=32ELSE Z=42
140 POKE(Y*80+X)*2,Z:GOTO 40
150 LOCATE 1,1,0:ON KEY(1)GOSUB 320:KEY(1) ON
160 V!=TIMER+.5:FOR Y=0 TO 24:FOR X=0 TO 79:N=0
170 Z=FNP(X-1,Y-1):IF Z=42 OR Z=46 THEN N=N+1
180 Z=FNP(X,Y-1):IF Z=42 OR Z=46 THEN N=N+1
190 Z=FNP(X+1,Y-1):IF Z=42 OR Z=46 THEN N=N+1
200 Z=FNP(X-1,Y):IF Z=42 OR Z=46 THEN N=N+1
210 Z=FNP(X+1,Y):IF Z=42 OR Z=46 THEN N=N+1
220 Z=FNP(X-1,Y+1):IF Z=42 OR Z=46 THEN N=N+1
230 Z=FNP(X,Y+1):IF Z=42 OR Z=46 THEN N=N+1
240 Z=FNP(X+1,Y+1):IF Z=42 OR Z=46 THEN N=N+1
250 Z=PEEK((Y*80+X)*2):IF Z=32 THEN IF N=3 THEN Z=43
260 IF Z=42 THEN IF N<2 OR N>3 THEN Z=46
270 POKE(Y*80+X)*2,Z:NEXT:NEXT:FOR Y=0 TO 24:FOR X=0 TO 79:Z=PEEK((Y*80+X)*2):IF Z=46 THEN Z=32
280 IF Z=43 THEN Z=42
290 POKE(Y*80+X)*2,Z:NEXT:NEXT
300 IF TIMER<V!GOTO 300
310 IF INKEY$=""GOTO 160
320 SYSTEM
นี่เป็นรุ่นที่เล่นกอล์ฟได้สูงสุด แต่ยังมีคุณสมบัติ: เมื่อเริ่มต้นคุณจะได้รับโปรแกรมแก้ไขซึ่งคุณสามารถเคลื่อนที่ได้ด้วยปุ่มลูกศร พื้นที่สลับแบคทีเรียเปิด / ปิดบนสนามปัจจุบันc
ล้างหน้าจอกลับมาเริ่มโหมดเกม
ต่อไปนี้เป็นเวอร์ชั่นที่สับสนน้อยกว่าซึ่งยังกำหนดบอร์ดเกมเริ่มต้นที่มีสองโครงสร้าง (สิ่งหมุนเวียนหมุนเวียนและเครื่องร่อน):
1000 REM Conway's Game of Life
1001 REM -
1002 REM Copyright (c) 2012 Thorsten "mirabilos" Glaser
1003 REM All rights reserved. Published under The MirOS Licence.
1004 REM -
1005 DEFINT A-Z:DEF SEG=&hB800
1006 KEY OFF:COLOR 7,0:CLS
1007 DEF FNP(X,Y)=PEEK((((Y+25) MOD 25)*80+((X+80) MOD 80))*2)
1010 PRINT "Initial setting mode, press SPACE to toggle, RETURN to continue"
1020 PRINT "Press C to clear the board, R to reset. OK? Press a key then."
1030 WHILE INKEY$="":WEND
1050 CLS
1065 DATA 3,3,4,3,5,3,6,3,7,3,8,3,3,4,4,4,5,4,6,4,7,4,8,4
1066 DATA 10,3,10,4,10,5,10,6,10,7,10,8,11,3,11,4,11,5,11,6,11,7,11,8
1067 DATA 11,10,10,10,9,10,8,10,7,10,6,10,11,11,10,11,9,11,8,11,7,11,6,11
1068 DATA 4,11,4,10,4,9,4,8,4,7,4,6,3,11,3,10,3,9,3,8,3,7,3,6
1069 DATA 21,0,22,1,22,2,21,2,20,2,-1,-1
1070 RESTORE 1065
1080 READ X,Y
1090 IF X=-1 GOTO 1120
1100 POKE (Y*80+X)*2,42
1110 GOTO 1080
1120 X=0:Y=0
1125 LOCATE Y+1,X+1,1
1130 S$=INKEY$
1140 IF S$="" GOTO 1130
1150 IF S$=CHR$(13) GOTO 1804
1160 IF S$=" " GOTO 1240
1170 IF S$=CHR$(0)+CHR$(&h48) THEN Y=(Y-1+25) MOD 25:GOTO 1125
1180 IF S$=CHR$(0)+CHR$(&h50) THEN Y=(Y+1) MOD 25:GOTO 1125
1190 IF S$=CHR$(0)+CHR$(&h4B) THEN X=(X-1+80) MOD 80:GOTO 1125
1200 IF S$=CHR$(0)+CHR$(&h4D) THEN X=(X+1) MOD 80:GOTO 1125
1210 IF S$="c" THEN CLS:GOTO 1120
1220 IF S$="r" GOTO 1050
1225 IF S$=CHR$(27) THEN END
1230 GOTO 1130
1240 Z=PEEK((Y*80+X)*2)
1250 IF Z=42 THEN Z=32 ELSE Z=42
1260 POKE (Y*80+X)*2,Z
1270 GOTO 1130
1804 LOCATE 1,1,0
1900 ON KEY(1) GOSUB 2300
1910 KEY(1) ON
2000 V!=TIMER+.5
2010 FOR Y=0 TO 24
2020 FOR X=0 TO 79
2030 N=0
2040 Z=FNP(X-1,Y-1):IF Z=42 OR Z=46 THEN N=N+1
2050 Z=FNP(X ,Y-1):IF Z=42 OR Z=46 THEN N=N+1
2060 Z=FNP(X+1,Y-1):IF Z=42 OR Z=46 THEN N=N+1
2070 Z=FNP(X-1,Y ):IF Z=42 OR Z=46 THEN N=N+1
2080 Z=FNP(X+1,Y ):IF Z=42 OR Z=46 THEN N=N+1
2090 Z=FNP(X-1,Y+1):IF Z=42 OR Z=46 THEN N=N+1
2100 Z=FNP(X ,Y+1):IF Z=42 OR Z=46 THEN N=N+1
2110 Z=FNP(X+1,Y+1):IF Z=42 OR Z=46 THEN N=N+1
2120 Z=PEEK((Y*80+X)*2)
2130 IF Z=32 THEN IF N=3 THEN Z=43
2140 IF Z=42 THEN IF N<2 OR N>3 THEN Z=46
2150 POKE (Y*80+X)*2,Z
2160 NEXT X
2170 NEXT Y
2200 FOR Y=0 TO 24
2210 FOR X=0 TO 79
2220 Z=PEEK((Y*80+X)*2)
2230 IF Z=46 THEN Z=32
2240 IF Z=43 THEN Z=42
2250 POKE (Y*80+X)*2,Z
2260 NEXT X
2270 NEXT Y
2280 IF TIMER<V! GOTO 2280
2290 IF INKEY$="" GOTO 2000
2300 SYSTEM
ฉันเขียนสิ่งนี้ในเวลา 15 นาทีในขณะที่เบื่อและรอเพื่อนคนหนึ่งซึ่งเป็นผู้เล่นโค๊ชกับ "ผู้ฝึกสอน" สำหรับเกมแห่งชีวิตของคอนเวย์ในเวลาเดียวกัน
มันทำหน้าที่ดังนี้: ใช้บัฟเฟอร์หน้าจอโหมดข้อความ 80x25 ทันที (เปลี่ยนค่าเริ่มต้นDEF SEG
เป็นใช้&hB000
หากคุณอยู่บนการ์ดกราฟิก Hercules การตั้งค่าเหล่านี้จะทำงานกับ Qemu และ (ช้าลง) dosbox เครื่องหมายดอกจัน*
เป็นแบคทีเรีย
มันทำงานได้สองรอบแรก birthplaces มีเครื่องหมายและความตายนับเป็นเป้าหมายด้วย+
.
ในรอบที่สอง+
และ.
ถูกแทนที่ด้วย*
และ
ตามลำดับ
TIMER
สิ่งคือการทำให้มันรอครึ่งหลังหลังจากที่แต่ละรอบในกรณีที่โฮสต์ Qemu ของคุณ☺รวดเร็วมาก
ฉันไม่ได้หวังว่าจะได้ราคาที่สั้นที่สุดที่นี่ แต่สำหรับคนที่มีความเท่โดยเฉพาะเมื่อพิจารณาการตั้งค่าเริ่มต้นของบอร์ด ฉันยังมีรุ่นที่เอ็นจิ้นเกมถูกแทนที่ด้วยรหัสการประกอบในกรณีที่คุณสนใจ ...