Time delay indication bar for a text game

Clash Royale CLAN TAG#URR8PPP
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;
up vote
7
down vote
favorite
For a game I am writing in Python 3.6.5, I made a text-based animation to indicate the passage of time (when chopping a tree or mining a rock, etc). I did a lot of trial and error to get the output how I wanted it, however it seems like I went about it in an overly-complicated way. I was wondering if there is a more efficient way to write this.
import os
import time
def progress_bar(text,secs):
bar = '['
c = 0 #used in sum method to determine number of Xs in bar
for i in range(0,11):
print(text+'n')
bar = bar.replace(' ','') #get rid of previous spaces added to bar
num_of_X = sum(c == 'X' for c in bar) #get number of Xs (progress)
for x in range(0,(10 - num_of_X)): #Fill remaining space after Xs
bar += ' '
print(bar + ']')
bar += 'X'
time.sleep(secs)
os.system('cls' if os.name == 'nt' else 'clear') #clears terminal
input('Loading complete!')
progress_bar('Enter Your Text Here!',0.15)
python python-3.x console animation
add a comment |Â
up vote
7
down vote
favorite
For a game I am writing in Python 3.6.5, I made a text-based animation to indicate the passage of time (when chopping a tree or mining a rock, etc). I did a lot of trial and error to get the output how I wanted it, however it seems like I went about it in an overly-complicated way. I was wondering if there is a more efficient way to write this.
import os
import time
def progress_bar(text,secs):
bar = '['
c = 0 #used in sum method to determine number of Xs in bar
for i in range(0,11):
print(text+'n')
bar = bar.replace(' ','') #get rid of previous spaces added to bar
num_of_X = sum(c == 'X' for c in bar) #get number of Xs (progress)
for x in range(0,(10 - num_of_X)): #Fill remaining space after Xs
bar += ' '
print(bar + ']')
bar += 'X'
time.sleep(secs)
os.system('cls' if os.name == 'nt' else 'clear') #clears terminal
input('Loading complete!')
progress_bar('Enter Your Text Here!',0.15)
python python-3.x console animation
add a comment |Â
up vote
7
down vote
favorite
up vote
7
down vote
favorite
For a game I am writing in Python 3.6.5, I made a text-based animation to indicate the passage of time (when chopping a tree or mining a rock, etc). I did a lot of trial and error to get the output how I wanted it, however it seems like I went about it in an overly-complicated way. I was wondering if there is a more efficient way to write this.
import os
import time
def progress_bar(text,secs):
bar = '['
c = 0 #used in sum method to determine number of Xs in bar
for i in range(0,11):
print(text+'n')
bar = bar.replace(' ','') #get rid of previous spaces added to bar
num_of_X = sum(c == 'X' for c in bar) #get number of Xs (progress)
for x in range(0,(10 - num_of_X)): #Fill remaining space after Xs
bar += ' '
print(bar + ']')
bar += 'X'
time.sleep(secs)
os.system('cls' if os.name == 'nt' else 'clear') #clears terminal
input('Loading complete!')
progress_bar('Enter Your Text Here!',0.15)
python python-3.x console animation
For a game I am writing in Python 3.6.5, I made a text-based animation to indicate the passage of time (when chopping a tree or mining a rock, etc). I did a lot of trial and error to get the output how I wanted it, however it seems like I went about it in an overly-complicated way. I was wondering if there is a more efficient way to write this.
import os
import time
def progress_bar(text,secs):
bar = '['
c = 0 #used in sum method to determine number of Xs in bar
for i in range(0,11):
print(text+'n')
bar = bar.replace(' ','') #get rid of previous spaces added to bar
num_of_X = sum(c == 'X' for c in bar) #get number of Xs (progress)
for x in range(0,(10 - num_of_X)): #Fill remaining space after Xs
bar += ' '
print(bar + ']')
bar += 'X'
time.sleep(secs)
os.system('cls' if os.name == 'nt' else 'clear') #clears terminal
input('Loading complete!')
progress_bar('Enter Your Text Here!',0.15)
python python-3.x console animation
edited May 22 at 20:35
asked May 22 at 19:59
ShroomBandit
1385
1385
add a comment |Â
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
6
down vote
accepted
- You can use
bar.countrather than yoursum - You can use
' ' * n, rather than your for loop. - You don't need
[in yourbar. You don't need to add whitespace,
str.formatcan do that for you.>>> '[:<10]'.format('XX')
'[XX ]'You don't need the
barvariable.- I'd move the
inputout of the function, as it doesn't have much to do with the bar. - You could change the size of the bar with another argument.
def progress_bar(text, secs, size=10):
for i in range(size + 1):
print('nn[:<]'.format(text, 'X' * i, size))
time.sleep(secs)
os.system('cls' if os.name == 'nt' else 'clear')
You can also remove the need for os if your terminal support r. This will mean that you can remove text from the function too, as IMO it shouldn't really be there either.
def progress_bar(secs, size=10):
for i in range(size + 1):
print('r[:<]'.format('X' * i, size), end='', flush=True)
time.sleep(secs)
print()
print('Your text here!n')
progress_bar(0.15)
input('>')
Alternately you can use b, this is better if you want to allow text like bar: .
def progress_bar(secs, size=10):
for i in range(size + 1):
print('[:<]'.format('X' * i, size, 'b' * (size + 2)), end='', flush=True)
time.sleep(secs)
print()
print('bar: ', end='', flush=True)
progress_bar(0.15)
input('>')
I need to learn more about string formatting as you've shown me. I will dive into it now, very helpful answer. Thank you!
â ShroomBandit
May 22 at 20:34
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
6
down vote
accepted
- You can use
bar.countrather than yoursum - You can use
' ' * n, rather than your for loop. - You don't need
[in yourbar. You don't need to add whitespace,
str.formatcan do that for you.>>> '[:<10]'.format('XX')
'[XX ]'You don't need the
barvariable.- I'd move the
inputout of the function, as it doesn't have much to do with the bar. - You could change the size of the bar with another argument.
def progress_bar(text, secs, size=10):
for i in range(size + 1):
print('nn[:<]'.format(text, 'X' * i, size))
time.sleep(secs)
os.system('cls' if os.name == 'nt' else 'clear')
You can also remove the need for os if your terminal support r. This will mean that you can remove text from the function too, as IMO it shouldn't really be there either.
def progress_bar(secs, size=10):
for i in range(size + 1):
print('r[:<]'.format('X' * i, size), end='', flush=True)
time.sleep(secs)
print()
print('Your text here!n')
progress_bar(0.15)
input('>')
Alternately you can use b, this is better if you want to allow text like bar: .
def progress_bar(secs, size=10):
for i in range(size + 1):
print('[:<]'.format('X' * i, size, 'b' * (size + 2)), end='', flush=True)
time.sleep(secs)
print()
print('bar: ', end='', flush=True)
progress_bar(0.15)
input('>')
I need to learn more about string formatting as you've shown me. I will dive into it now, very helpful answer. Thank you!
â ShroomBandit
May 22 at 20:34
add a comment |Â
up vote
6
down vote
accepted
- You can use
bar.countrather than yoursum - You can use
' ' * n, rather than your for loop. - You don't need
[in yourbar. You don't need to add whitespace,
str.formatcan do that for you.>>> '[:<10]'.format('XX')
'[XX ]'You don't need the
barvariable.- I'd move the
inputout of the function, as it doesn't have much to do with the bar. - You could change the size of the bar with another argument.
def progress_bar(text, secs, size=10):
for i in range(size + 1):
print('nn[:<]'.format(text, 'X' * i, size))
time.sleep(secs)
os.system('cls' if os.name == 'nt' else 'clear')
You can also remove the need for os if your terminal support r. This will mean that you can remove text from the function too, as IMO it shouldn't really be there either.
def progress_bar(secs, size=10):
for i in range(size + 1):
print('r[:<]'.format('X' * i, size), end='', flush=True)
time.sleep(secs)
print()
print('Your text here!n')
progress_bar(0.15)
input('>')
Alternately you can use b, this is better if you want to allow text like bar: .
def progress_bar(secs, size=10):
for i in range(size + 1):
print('[:<]'.format('X' * i, size, 'b' * (size + 2)), end='', flush=True)
time.sleep(secs)
print()
print('bar: ', end='', flush=True)
progress_bar(0.15)
input('>')
I need to learn more about string formatting as you've shown me. I will dive into it now, very helpful answer. Thank you!
â ShroomBandit
May 22 at 20:34
add a comment |Â
up vote
6
down vote
accepted
up vote
6
down vote
accepted
- You can use
bar.countrather than yoursum - You can use
' ' * n, rather than your for loop. - You don't need
[in yourbar. You don't need to add whitespace,
str.formatcan do that for you.>>> '[:<10]'.format('XX')
'[XX ]'You don't need the
barvariable.- I'd move the
inputout of the function, as it doesn't have much to do with the bar. - You could change the size of the bar with another argument.
def progress_bar(text, secs, size=10):
for i in range(size + 1):
print('nn[:<]'.format(text, 'X' * i, size))
time.sleep(secs)
os.system('cls' if os.name == 'nt' else 'clear')
You can also remove the need for os if your terminal support r. This will mean that you can remove text from the function too, as IMO it shouldn't really be there either.
def progress_bar(secs, size=10):
for i in range(size + 1):
print('r[:<]'.format('X' * i, size), end='', flush=True)
time.sleep(secs)
print()
print('Your text here!n')
progress_bar(0.15)
input('>')
Alternately you can use b, this is better if you want to allow text like bar: .
def progress_bar(secs, size=10):
for i in range(size + 1):
print('[:<]'.format('X' * i, size, 'b' * (size + 2)), end='', flush=True)
time.sleep(secs)
print()
print('bar: ', end='', flush=True)
progress_bar(0.15)
input('>')
- You can use
bar.countrather than yoursum - You can use
' ' * n, rather than your for loop. - You don't need
[in yourbar. You don't need to add whitespace,
str.formatcan do that for you.>>> '[:<10]'.format('XX')
'[XX ]'You don't need the
barvariable.- I'd move the
inputout of the function, as it doesn't have much to do with the bar. - You could change the size of the bar with another argument.
def progress_bar(text, secs, size=10):
for i in range(size + 1):
print('nn[:<]'.format(text, 'X' * i, size))
time.sleep(secs)
os.system('cls' if os.name == 'nt' else 'clear')
You can also remove the need for os if your terminal support r. This will mean that you can remove text from the function too, as IMO it shouldn't really be there either.
def progress_bar(secs, size=10):
for i in range(size + 1):
print('r[:<]'.format('X' * i, size), end='', flush=True)
time.sleep(secs)
print()
print('Your text here!n')
progress_bar(0.15)
input('>')
Alternately you can use b, this is better if you want to allow text like bar: .
def progress_bar(secs, size=10):
for i in range(size + 1):
print('[:<]'.format('X' * i, size, 'b' * (size + 2)), end='', flush=True)
time.sleep(secs)
print()
print('bar: ', end='', flush=True)
progress_bar(0.15)
input('>')
edited May 22 at 20:37
answered May 22 at 20:18
Peilonrayz
24.3k336102
24.3k336102
I need to learn more about string formatting as you've shown me. I will dive into it now, very helpful answer. Thank you!
â ShroomBandit
May 22 at 20:34
add a comment |Â
I need to learn more about string formatting as you've shown me. I will dive into it now, very helpful answer. Thank you!
â ShroomBandit
May 22 at 20:34
I need to learn more about string formatting as you've shown me. I will dive into it now, very helpful answer. Thank you!
â ShroomBandit
May 22 at 20:34
I need to learn more about string formatting as you've shown me. I will dive into it now, very helpful answer. Thank you!
â ShroomBandit
May 22 at 20:34
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f194972%2ftime-delay-indication-bar-for-a-text-game%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password