Hello,
I'm trying to make an ASCII code type box (the ones you see on GameFAQs of famous logos and such) since its part of the Chapter 6 Lab for Programming Arcade Games with Pygame.
Here is what I have so far. The trouble I'm having is to determine
how to space out the middle line. I know this depends on what n equals and I've been trying to tweak it to match any number of 'n'.
The line I am having trouble with is Line 39
I'm trying to calculate how many spaces I actually need by multiplying it by n*2 to get the max number across plus a little bit for one extra space.
This only works for n = 4, so I think I messed up pretty badly sadly enough.
I do this because you can't just add a number to a space character and I believe you can only multiply or divide a space by a number.
I was even thinking about rethinking this and converting whatever I obtain into int using int(), but I might be overthinking things.
Here's my code:
# n = row number
# Try 3 rows:
n = 4
for i in range(n):
for j in range(n*2):
# Add if statements to limit the cases to draw a line of o's
# on the top and bottom lines for the box but spaces
# with an o on each side for all the lines in between:
# Top row:
if i == 0:
print("o", end = " ")
# Middle cases (maintain first row to last row, but limit to 1st column)
if i > 0 and i < n-1 and j < 1:
print("o", end = " ")
# Maintain first row to last row, but limit to last column based on n*2:
if i > 0 and i < n-1 and j == (n): # 13 spaces needed for n = 4
print(" " * ((n*2)+(n-1)), "o", end = " ")
# Bottom row:
if i == n-1:
print("o", end = " ")
print()
# Fix the middle case
# Chapter 6 Lab Link:
# http://programarcadegames.com/index.php?chapter=lab_loopy_lab
This is my output so far (ignore the first case since it was in an unrelated part of the lab
*** Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 18 2013, 21:18:40) [MSC v.1600 32 bit (Intel)] on win32. ***
*** Remote Python engine is active ***
>>>
*** Remote Interpreter Reinitialized ***
>>>
10
11 12
13 14 15
16 17 18 19
20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36 37
38 39 40 41 42 43 44 45
46 47 48 49 50 51 52 53 54
o o o o o o o o
o o
o o
o o o o o o o o
>>>
It looks like you're new here. If you want to get involved, click one of these buttons!
Comments
Depending on the text in the terminal/CLI the space usually is the same, in Python 2 you can just multiply the characters out to make length e.g.:
def print_squarebox_lines(n,l):
print "x" * n
for i in range(l):
print "x" + " " * (n-2) + "x"
print "x" * n
``
print_squarebox_lines(3,3):
xxx
x x
x x
x x
xxx
Not sure how python 3 stacks up