mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-12 07:40:50 -08:00
bullfight added
This commit is contained in:
@@ -6,25 +6,25 @@
|
||||
205 PRINT "DO YOU WANT INSTRUCTIONS";
|
||||
206 INPUT Z$
|
||||
207 IF Z$="NO" THEN 400
|
||||
210 PRINT "HELLO, ALL YOU BLOODLOVERS AND AFICIONADOS."
|
||||
220 PRINT "HERE IS YOUR BIG CHANCE TO KILL A BULL."
|
||||
230 PRINT
|
||||
240 PRINT "ON EACH PASS OF THE BULL, YOU MAY TRY"
|
||||
250 PRINT "0 - VERONICA (DANGEROUS INSIDE MOVE OF THE CAPE)"
|
||||
260 PRINT "1 - LESS DANGEROUS OUTSIDE MOVE OF THE CAPE"
|
||||
270 PRINT "2 - ORDINARY SWIRL OF THE CAPE."
|
||||
280 PRINT
|
||||
290 PRINT "INSTEAD OF THE ABOVE, YOU MAY TRY TO KILL THE BULL"
|
||||
300 PRINT "ON ANY TURN: 4 (OVER THE HORNS), 5 (IN THE CHEST)."
|
||||
310 PRINT "BUT IF I WERE YOU,"
|
||||
320 PRINT "I WOULDN'T TRY IT BEFORE THE SEVENTH PASS."
|
||||
330 PRINT
|
||||
340 PRINT "THE CROWD WILL DETERMINE WHAT AWARD YOU DESERVE"
|
||||
350 PRINT "(POSTHUMOUSLY IF NECESSARY)."
|
||||
360 PRINT "THE BRAVER YOU ARE, THE BETTER THE AWARD YOU RECEIVE."
|
||||
370 PRINT
|
||||
380 PRINT "THE BETTER THE JOB THE PICADORES AND TOREADORES DO,"
|
||||
390 PRINT "THE BETTER YOUR CHANCES ARE."
|
||||
println("HELLO, ALL YOU BLOODLOVERS AND AFICIONADOS.")
|
||||
println("HERE IS YOUR BIG CHANCE TO KILL A BULL.")
|
||||
println()
|
||||
println("ON EACH PASS OF THE BULL, YOU MAY TRY")
|
||||
println("0 - VERONICA (DANGEROUS INSIDE MOVE OF THE CAPE)")
|
||||
println("1 - LESS DANGEROUS OUTSIDE MOVE OF THE CAPE")
|
||||
println("2 - ORDINARY SWIRL OF THE CAPE.")
|
||||
println()
|
||||
println("INSTEAD OF THE ABOVE, YOU MAY TRY TO KILL THE BULL")
|
||||
println("ON ANY TURN: 4 (OVER THE HORNS), 5 (IN THE CHEST).")
|
||||
println("BUT IF I WERE YOU,")
|
||||
println("I WOULDN'T TRY IT BEFORE THE SEVENTH PASS.")
|
||||
println()
|
||||
println("THE CROWD WILL DETERMINE WHAT AWARD YOU DESERVE")
|
||||
println("(POSTHUMOUSLY IF NECESSARY).")
|
||||
println("THE BRAVER YOU ARE, THE BETTER THE AWARD YOU RECEIVE.")
|
||||
println()
|
||||
println("THE BETTER THE JOB THE PICADORES AND TOREADORES DO,")
|
||||
println("THE BETTER YOUR CHANCES ARE.")
|
||||
400 PRINT
|
||||
410 PRINT
|
||||
420 D(5)=1
|
||||
@@ -32,55 +32,70 @@
|
||||
450 DIM L$(5)
|
||||
455 A=INT(RND(1)*5+1)
|
||||
460 FOR I=1 TO 5
|
||||
463 READ L$(I)
|
||||
463 READ L$(I)
|
||||
467 NEXT I
|
||||
470 DATA "SUPERB","GOOD","FAIR","POOR","AWFUL"
|
||||
490 PRINT "YOU HAVE DRAWN A ";L$(A);" BULL."
|
||||
500 IF A>4 THEN 530
|
||||
510 IF A<2 THEN 550
|
||||
520 GOTO 570
|
||||
530 PRINT "YOU'RE LUCKY."
|
||||
540 GOTO 570
|
||||
550 PRINT "GOOD LUCK. YOU'LL NEED IT."
|
||||
560 PRINT
|
||||
|
||||
510 IF A<2 THEN 550
|
||||
520 GOTO 570
|
||||
|
||||
530 PRINT "YOU'RE LUCKY."
|
||||
540 GOTO 570
|
||||
|
||||
550 PRINT "GOOD LUCK. YOU'LL NEED IT."
|
||||
560 PRINT
|
||||
|
||||
570 PRINT
|
||||
|
||||
590 A$="PICADO"
|
||||
595 B$="RES"
|
||||
600 GOSUB 1610
|
||||
|
||||
610 D(1)=C
|
||||
|
||||
630 A$="TOREAD"
|
||||
635 B$="ORES"
|
||||
640 GOSUB 1610
|
||||
|
||||
650 D(2)=C
|
||||
660 PRINT
|
||||
670 PRINT
|
||||
680 IF Z=1 THEN 1310
|
||||
|
||||
690 D(3)=D(3)+1
|
||||
700 PRINT "PASS NUMBER";D(3)
|
||||
710 IF D(3)<3 THEN 760
|
||||
720 PRINT "HERE COMES THE BULL. TRY FOR A KILL";
|
||||
730 GOSUB 1930
|
||||
735 IF Z1=1 THEN 1130
|
||||
740 PRINT "CAPE MOVE";
|
||||
750 GOTO 800
|
||||
760 PRINT "THE BULL IS CHARGING AT YOU! YOU ARE THE MATADOR--"
|
||||
770 PRINT "DO YOU WANT TO KILL THE BULL";
|
||||
780 GOSUB 1930
|
||||
785 IF Z1=1 THEN 1130
|
||||
790 PRINT "WHAT MOVE DO YOU MAKE WITH THE CAPE";
|
||||
|
||||
720 PRINT "HERE COMES THE BULL. TRY FOR A KILL";
|
||||
730 GOSUB 1930
|
||||
735 IF Z1=1 THEN 1130
|
||||
740 PRINT "CAPE MOVE";
|
||||
750 GOTO 800
|
||||
#else
|
||||
760 PRINT "THE BULL IS CHARGING AT YOU! YOU ARE THE MATADOR--"
|
||||
770 PRINT "DO YOU WANT TO KILL THE BULL";
|
||||
780 GOSUB 1930
|
||||
785 IF Z1=1 THEN 1130
|
||||
790 PRINT "WHAT MOVE DO YOU MAKE WITH THE CAPE";
|
||||
|
||||
800 INPUT E
|
||||
810 IF E<>INT(ABS(E)) THEN 830
|
||||
820 IF E<3 THEN 850
|
||||
830 PRINT "DON'T PANIC, YOU IDIOT! PUT DOWN A CORRECT NUMBER"
|
||||
840 GOTO 800
|
||||
850 REM
|
||||
820 IF E<3 THEN 850
|
||||
830 PRINT "DON'T PANIC, YOU IDIOT! PUT DOWN A CORRECT NUMBER"
|
||||
840 GOTO 800
|
||||
850 REM
|
||||
|
||||
860 IF E=0 THEN 920
|
||||
870 IF E=1 THEN 900
|
||||
880 M=.5
|
||||
890 GOTO 930
|
||||
900 M=2
|
||||
910 GOTO 930
|
||||
920 M=3
|
||||
870 IF E=1 THEN 900
|
||||
880 M=.5
|
||||
890 GOTO 930
|
||||
900 M=2
|
||||
910 GOTO 930
|
||||
#else
|
||||
920 M=3
|
||||
|
||||
930 L=L+M
|
||||
940 F=(6-A+M/10)*RND(1)/((D(1)+D(2)+D(3)/10)*5)
|
||||
950 IF F<.51 THEN 660
|
||||
@@ -119,6 +134,7 @@
|
||||
1280 GOTO 1320
|
||||
1290 IF K>.8 THEN 960
|
||||
1300 GOTO 1260
|
||||
|
||||
1310 PRINT
|
||||
1320 PRINT
|
||||
1330 PRINT
|
||||
@@ -149,37 +165,51 @@
|
||||
1580 PRINT
|
||||
1590 PRINT "ADIOS":PRINT:PRINT:PRINT
|
||||
1600 GOTO 2030
|
||||
|
||||
1610 B=3/A*RND(1)
|
||||
1620 IF B<.37 THEN 1740
|
||||
1630 IF B<.5 THEN 1720
|
||||
1640 IF B<.63 THEN 1700
|
||||
1650 IF B<.87 THEN 1680
|
||||
|
||||
1660 C=.1
|
||||
1670 GOTO 1750
|
||||
|
||||
1680 C=.2
|
||||
1690 GOTO 1750
|
||||
|
||||
1700 C=.3
|
||||
1710 GOTO 1750
|
||||
|
||||
1720 C=.4
|
||||
1730 GOTO 1750
|
||||
|
||||
1740 C=.5
|
||||
|
||||
1750 T=INT(10*C+.2)
|
||||
1760 PRINT "THE ";A$;B$;" DID A ";L$(T);" JOB."
|
||||
|
||||
1770 IF 4>T THEN 1900
|
||||
1780 IF 5=T THEN 1870
|
||||
1790 ON FNA(K) GOTO 1830,1850
|
||||
1780 IF 5=T THEN 1870
|
||||
1790 ON FNA(K) GOTO 1830,1850
|
||||
|
||||
REM Dead code
|
||||
1800 IF A$="TOREAD" THEN 1820
|
||||
1810 PRINT "ONE OF THE HORSES OF THE ";A$;B$;" WAS KILLED."
|
||||
1820 ON FNA(K) GOTO 1830,1850
|
||||
1830 PRINT "ONE OF THE ";A$;B$;" WAS KILLED."
|
||||
1840 GOTO 1900
|
||||
1850 PRINT "NO ";A$;B$;" WERE KILLED."
|
||||
1860 GOTO 1900
|
||||
1870 IF A$="TOREAD" THEN 1890
|
||||
1880 PRINT FNA(K);"OF THE HORSES OF THE ";A$;B$;" KILLED."
|
||||
1890 PRINT FNA(K);"OF THE ";A$;B$;" KILLED."
|
||||
|
||||
1830 PRINT "ONE OF THE ";A$;B$;" WAS KILLED."
|
||||
1840 GOTO 1900
|
||||
|
||||
1850 PRINT "NO ";A$;B$;" WERE KILLED."
|
||||
1860 GOTO 1900
|
||||
|
||||
1870 IF A$="TOREAD" THEN 1890
|
||||
1880 PRINT FNA(K);"OF THE HORSES OF THE ";A$;B$;" KILLED."
|
||||
1890 PRINT FNA(K);"OF THE ";A$;B$;" KILLED."
|
||||
1900 PRINT
|
||||
1910 RETURN
|
||||
|
||||
1920 REM
|
||||
1930 INPUT A$
|
||||
1940 IF A$="YES" THEN 1990
|
||||
|
||||
144
17_Bullfight/kotlin/src/bullfight/Main.kt
Normal file
144
17_Bullfight/kotlin/src/bullfight/Main.kt
Normal file
@@ -0,0 +1,144 @@
|
||||
package bullfight
|
||||
|
||||
import bullfight.Yorn.NO
|
||||
import kotlin.random.Random
|
||||
|
||||
val fna: Int get() = Random.nextInt(1, 2)
|
||||
|
||||
val l = listOf("SUPERB", "GOOD", "FAIR", "POOR", "AWFUL")
|
||||
var aInt: Int = 0
|
||||
|
||||
fun main() {
|
||||
val d = mutableListOf(0f,0f,0f,0f,0f,0f)
|
||||
intro()
|
||||
instructions()
|
||||
d[5] = 1f
|
||||
d[4] = 1f
|
||||
|
||||
aInt = Random.nextInt(1, 6)
|
||||
println("YOU HAVE DRAWN A ${l[aInt - 1]} BULL.")
|
||||
when {
|
||||
aInt < 2 -> {
|
||||
println("GOOD LUCK. YOU'LL NEED IT.")
|
||||
}
|
||||
|
||||
aInt > 4 -> {
|
||||
println("YOU'RE LUCKY.")
|
||||
}
|
||||
|
||||
else -> Unit
|
||||
}
|
||||
|
||||
d[1] = fight(FirstAct.picadores)
|
||||
d[2] = fight(FirstAct.toreadores)
|
||||
repeat(2) { println() }
|
||||
|
||||
d[3]++
|
||||
println("PASS NUMBER ${d[3]}")
|
||||
if (d[3]>=3) {
|
||||
print("HERE COMES THE BULL. TRY FOR A KILL")
|
||||
if (Yorn.input() == NO) {
|
||||
print("CAPE MOVE")
|
||||
}
|
||||
}
|
||||
else {
|
||||
println("THE BULL IS CHARGING AT YOU! YOU ARE THE MATADOR--")
|
||||
print("DO YOU WANT TO KILL THE BULL")
|
||||
if (Yorn.input() == NO) {
|
||||
print("WHAT MOVE DO YOU MAKE WITH THE CAPE")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
enum class Yorn(val s: String) {
|
||||
YES("YES"),NO("NO");
|
||||
override fun toString() = s
|
||||
|
||||
companion object {
|
||||
fun input() : Yorn {
|
||||
do {
|
||||
print("? ")
|
||||
val z1 = readln()
|
||||
Yorn.values().firstOrNull { z1 == it.s }?.let { return it } ?: println("YES OR NO")
|
||||
} while (true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum class FirstAct(val str: String) {
|
||||
picadores("PICADORES"), toreadores("TOREADORES");
|
||||
override fun toString() = str
|
||||
}
|
||||
|
||||
fun fight(firstAct: FirstAct): Float {
|
||||
|
||||
val b = 3.0 / aInt * Random.nextFloat()
|
||||
val c = when {
|
||||
b < .37 -> .5f
|
||||
b < .5 -> .4f
|
||||
b < .63 -> .3f
|
||||
b < .87 -> .2f
|
||||
else -> .1f
|
||||
}
|
||||
val t = (10 * c + .2).toInt()
|
||||
println("THE $firstAct DID A ${l[t - 1]} JOB.")
|
||||
|
||||
if (t >= 4) {
|
||||
if (t == 5) {
|
||||
if (firstAct != FirstAct.toreadores) {
|
||||
println ("$fna OF THE HORSES OF THE $firstAct KILLED.")
|
||||
}
|
||||
println("$fna OF THE $firstAct KILLED.")
|
||||
}
|
||||
else {
|
||||
println(
|
||||
when (fna) {
|
||||
1 -> "ONE OF THE $firstAct WAS KILLED."
|
||||
2 -> "NO $firstAct WERE KILLED."
|
||||
else -> ""
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
println()
|
||||
|
||||
return c
|
||||
}
|
||||
|
||||
private fun instructions() {
|
||||
print("DO YOU WANT INSTRUCTIONS? ")
|
||||
if (readln().trim() != "NO") {
|
||||
println("HELLO, ALL YOU BLOODLOVERS AND AFICIONADOS.")
|
||||
println("HERE IS YOUR BIG CHANCE TO KILL A BULL.")
|
||||
println()
|
||||
println("ON EACH PASS OF THE BULL, YOU MAY TRY")
|
||||
println("0 - VERONICA (DANGEROUS INSIDE MOVE OF THE CAPE)")
|
||||
println("1 - LESS DANGEROUS OUTSIDE MOVE OF THE CAPE")
|
||||
println("2 - ORDINARY SWIRL OF THE CAPE.")
|
||||
println()
|
||||
println("INSTEAD OF THE ABOVE, YOU MAY TRY TO KILL THE BULL")
|
||||
println("ON ANY TURN: 4 (OVER THE HORNS), 5 (IN THE CHEST).")
|
||||
println("BUT IF I WERE YOU,")
|
||||
println("I WOULDN'T TRY IT BEFORE THE SEVENTH PASS.")
|
||||
println()
|
||||
println("THE CROWD WILL DETERMINE WHAT AWARD YOU DESERVE")
|
||||
println("(POSTHUMOUSLY IF NECESSARY).")
|
||||
println("THE BRAVER YOU ARE, THE BETTER THE AWARD YOU RECEIVE.")
|
||||
println()
|
||||
println("THE BETTER THE JOB THE PICADORES AND TOREADORES DO,")
|
||||
println("THE BETTER YOUR CHANCES ARE.")
|
||||
}
|
||||
repeat(2) {
|
||||
println()
|
||||
}
|
||||
}
|
||||
|
||||
fun intro() {
|
||||
println(" ".repeat(34) + "BULL")
|
||||
println(" ".repeat(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY")
|
||||
repeat(3) {
|
||||
println()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user