On 10/11/14 20:57, [email protected] wrote:
I wrote the following code as a simulation for the table top game
x-wing.
I don;t know it so can only give some general comments below...
import random
print("X-wing dice simulator")
x = int(input("How many dice will the offensive player be rolling?\n"))
y = int(input("How many dice will the defensive player be rolling?\n"))
Might be better to use more descriptive names like 'offense_turns'
and defense_turns'?
hits = 0
crits = 0
dodges = 0
offense = 0
defense = 0
while offense < x:
odie = random.randint(1,8)
Is it really an 8 sided dice?
if odie <= 4:
hits = hits + 1
offense = offense + 1
if odie == 4:
crits = crits + 1
offense = offense + 1
else:
continue
You don't need the else: continue, the loop does that by itself.
Also by not incrementing the offense counter you effectively let the
player have unlimited misses - is that really what you want?
Finally, the Pythonic idiom for incrementing a counter, n, is
n += 1
It saves a few keystrokes...
while defense < y:
ddie = random.randint(1,8)
if ddie <= 3:
dodges = dodges + 1
defense = defense + 1
else:
continue
Same comments as above
To help you debug this it might be worth adding a few print statements
inside the loop, like so:
while offense < x:
odie = random.randint(1,8)
print('odie is: ',odie)
if odie <= 4:
hits = hits + 1
offense = offense + 1
print('hits, offense = ',hits,offense)
print("The offensive player lands", hits,"hits and", crits,"crits\n")
print("The defensive player dodges", dodges, "hits\n")
print("The offensive player deals", int((hits + crits) - dodges), "to
the defensive player")
Doing all the printing after the loop finishes gives you a
very limited view of what's happening inside.
hth
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor