strings and loops...
Hi, I'm writing a program with 8 strings (from a to h) and I want to be able to edit elements, copy elements and delete elements from one string to another what not. but the only way I can think of for doing it is to have loads of loops which makes the program very ineloquent and messy.
it's a very basic chess program. the user says they want to move (for example) from g1 to f1. I have a loop that goes something like
(wm is the white move [a string with two elements, a letter and number], mp is the moving piece, a, b, ... g, h are strings of 12 elements each)
I have one of those for a, b, c, d,e, f, g and h, but I want a loop which will do it for me. this equates the moving piece (mp) to the element number you specify in wm in a. as you can see with there being 8 strings, there are a lot of (8 of) these loops. is there a way to do a for loop for string names? If I do it with a letter, it won't work cause the letter is only a sincge character, not a string.
PS I hope I'm being clear!
Why aren't you using a two dimensional array for your chess board instead of a string?
to be honest, they kinda confuse me. is it easier to do that with an array?
You could just do:
Then if the first dimension is your a-h and the second is 0-7 you could just do:
P.S. -'0' is clearer than -48 to most people.
board[wm - 'a'][wm - '0'] = ' ';
Read it from right to left.
char onedee[ SIZE ];
An array SIZE elements big, called onedee of type char. You can access each element of the array by doing:
The only "hard" thing to rememeber, is that you start counting from zero up trough SOMESIZE-1. Thus, if you have an array of 8 items, you have valid elements:
x = onedee[ SOMENUMBER ]; /* Get the value in slot SOMENUMBER and put it in x. */
onedee[ SOMENUMBER ] = x; /* Put the value of x in slot SOMENUMBER. */
Two dimensional arrays are done exactly the same way, but you have a "row" element also.
onedee[ 0 ]
onedee[ 1 ]
onedee[ 7 ] /* if SOMESIZE is 8, you get up to 8-1 to access... */
Think of it as a grid, such as graph paper, or the pixels of your monitor. Again, you get 0 through SIZE-1 for both accessors. So, if we had an 8 by 8 grid, we would get:
char twodee[ ROW ][ COLUMN ];
twodee[ 0 ][ 0 ]
twodee[ 0 ][ 1 ]
twodee[ 0 ][ 7 ] /* all the elements in the first row... */
twodee[ 1 ][ 0 ]
twodee[ 1 ][ 1 ]
twodee[ 1 ][ 7 ] /* all the elements in the second row... */
twodee[ 7 ][ 7 ] /* up through the very last item in the last row... */