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.count
rather 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.format
can do that for you.>>> '[:<10]'.format('XX')
'[XX ]'You don't need the
bar
variable.- I'd move the
input
out 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.count
rather 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.format
can do that for you.>>> '[:<10]'.format('XX')
'[XX ]'You don't need the
bar
variable.- I'd move the
input
out 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.count
rather 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.format
can do that for you.>>> '[:<10]'.format('XX')
'[XX ]'You don't need the
bar
variable.- I'd move the
input
out 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.count
rather 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.format
can do that for you.>>> '[:<10]'.format('XX')
'[XX ]'You don't need the
bar
variable.- I'd move the
input
out 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.count
rather 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.format
can do that for you.>>> '[:<10]'.format('XX')
'[XX ]'You don't need the
bar
variable.- I'd move the
input
out 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