Staredit Network > Forums > Technology & Computers > Topic: C++ 2D array help
C++ 2D array help
This topic is locked. You can no longer write replies here.
Mar 23 2008, 10:14 pm
By: Falkoner  

Mar 23 2008, 10:14 pm Falkoner Post #1



Okay, I have a working 2D array, that I can move around on using the aswd keys, but I can't make collision detection, here's the code that allows me to move around:

Code
#include <iostream.h>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

int mx=5;
int my=4;
int i, j;
char direction;
char keypress;
char matrix[100][100];


void gotoxy(short x, short y)
{
     HANDLE hConsoleOutput;
     COORD Cursor_an_Pos = {x,y};
     hConsoleOutput = GetStdHandle (STD_OUTPUT_HANDLE);
     SetConsoleCursorPosition(hConsoleOutput, Cursor_an_Pos);
}



void loadgrid()
{    
    for(i=0; i<10; i++)
    {
           for(j=0; j<10; j++)
           {
            strcpy(matrix[0],"     ----     ");
            strcpy(matrix[1],"    |    |    ");
            strcpy(matrix[2],"    |    |    ");
            strcpy(matrix[3]," ---      --- ");
            strcpy(matrix[4],"|            |");
            strcpy(matrix[5],"|            |");
            strcpy(matrix[6]," ---      --- ");
            strcpy(matrix[7],"    |    |    ");
            strcpy(matrix[8],"    |    |    ");
            strcpy(matrix[9],"     ----     ");

           }
     }
}



void printgrid()
{
     for (int i=0; i<30; i++)
     {
           for ( int j=0; j<30; j++)
           {
                 printf("%c", matrix[i][j]);
           }
           printf("\n");
     }
}




int main()
{

system("COLOR 0B");
loadgrid();
printgrid();

gotoxy(mx,my);

printf("v");


while (mx>0 && my>0)
{
     loadgrid();

     if (kbhit())
     {
           keypress=getch();

           if ((keypress == 'd') || (keypress == 'a') || (keypress == 'w') || (keypress == 's') || (keypress == 'S') || (keypress == 'D') || (keypress == 'A') || (keypress == 'W'))
            {
                 direction = keypress;
                 if (direction == 's' || direction == 'S')
                 {
                        gotoxy(mx,my);
                        printf(" ");
                        my++;
                        gotoxy(mx,my);
                        printf("v");
                 }
                 if (direction == 'w' || direction == 'W')
                 {
                    gotoxy(mx,my);
                    printf(" ");
                    my--;
                    gotoxy(mx,my);
                    printf("^");
                 }
                 if (direction == 'a' || direction == 'A')
                 {
                    gotoxy(mx,my);
                    printf(" ");
                    mx--;
                    gotoxy(mx,my);
                    printf("<");
                 }
                 if (direction == 'd' || direction == 'D')
                 {
                    gotoxy(mx,my);
                    printf(" ");
                    mx++;
                    gotoxy(mx,my);
                    printf(">");
                }

                 direction = ' ';
            }
     }
}

return 0;
}


Now, I tried to have something look ahead to the space they are walking to, but for some reason that is seeing invisible walls or something... Here's the code I tried:

Code
#include <iostream.h>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

int mx=5;
int my=4;
int i, j;
char direction;
char keypress;
char matrix[100][100];


void gotoxy(short x, short y)
{
     HANDLE hConsoleOutput;
     COORD Cursor_an_Pos = {x,y};
     hConsoleOutput = GetStdHandle (STD_OUTPUT_HANDLE);
     SetConsoleCursorPosition(hConsoleOutput, Cursor_an_Pos);
}



void loadgrid()
{    
    for(i=0; i<10; i++)
    {
           for(j=0; j<10; j++)
           {
            strcpy(matrix[0],"     ----     ");
            strcpy(matrix[1],"    |    |    ");
            strcpy(matrix[2],"    |    |    ");
            strcpy(matrix[3]," ---      --- ");
            strcpy(matrix[4],"|            |");
            strcpy(matrix[5],"|            |");
            strcpy(matrix[6]," ---      --- ");
            strcpy(matrix[7],"    |    |    ");
            strcpy(matrix[8],"    |    |    ");
            strcpy(matrix[9],"     ----     ");

           }
     }
}



void printgrid()
{
     for (int i=0; i<30; i++)
     {
           for ( int j=0; j<30; j++)
           {
                 printf("%c", matrix[i][j]);
           }
           printf("\n");
     }
}




int main()
{

system("COLOR 0B");
loadgrid();
printgrid();

gotoxy(mx,my);

printf("v");


while (mx>0 && my>0)
{
     loadgrid();

     if (kbhit())
     {
           keypress=getch();
           if ((keypress == 'd') || (keypress == 'a') || (keypress == 'w') || (keypress == 's') || (keypress == 'S') || (keypress == 'D') || (keypress == 'A') || (keypress == 'W'))
            {
                 direction = keypress;
                 if (direction == 's' || direction == 'S')
                 {
                    if(matrix[mx][(my + 2)] == ' ')
                    {
                        gotoxy(mx,my);
                        printf(" ");
                        my++;
                        gotoxy(mx,my);
                        printf("v");
                    }
                 }
                 if (direction == 'w' || direction == 'W')
                 {
                    if(matrix[mx][(my - 2)] == ' ')
                    {
                    gotoxy(mx,my);
                    printf(" ");
                    my--;
                    gotoxy(mx,my);
                    printf("^");
                    }
                 }
                 if (direction == 'a' || direction == 'A')
                 {
                    if(matrix[(mx - 2)][my] == ' ')
                    {
                    gotoxy(mx,my);
                    printf(" ");
                    mx--;
                    gotoxy(mx,my);
                    printf("<");
                    }
                 }
                 if (direction == 'd' || direction == 'D')
                 {
                    if(matrix[(mx + 2)][my] == ' ')
                    {
                    gotoxy(mx,my);
                    printf(" ");
                    mx++;
                    gotoxy(mx,my);
                    printf(">");
                    }
                 }

                 direction = ' ';
            }
     }
}

return 0;
}


Help meh plz!

Post has been edited 1 time(s), last time on Mar 23 2008, 10:52 pm by Falkoner.



None.

Mar 23 2008, 10:39 pm Doodle77 Post #2



what's the
Code
cout <<  endl  << matrix[mx - 1][my];
about?



None.

Mar 23 2008, 10:52 pm Falkoner Post #3



Oh, sorry, left my debugging code in there :P



None.

Mar 24 2008, 1:02 pm Falkoner Post #4



Anyone? Is this really that difficult?



None.

Mar 24 2008, 10:23 pm Falkoner Post #5



Nevermind, I figured it out, the x and y are switched, it's normal on the screen, but in the matrix it goes y x, not x y, so it all works now..



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[03:25 am]
Symmetry -- the best part is that he perfectly summed up SEN's discord
[03:12 am]
Ultraviolet -- WeirdoX4857
WeirdoX4857 shouted: Nigga how you ask is it still going strong when you get a text every 3 miles per hour or something
Joined: Yesterday, 12:08 pm Last Active: Yesterday, 12:14 pm , truly a glorious 6 minutes.
[03:11 am]
Ultraviolet -- :lol:
[2026-9-29. : 2:43 am]
Symmetry -- I'm doing my best, damn it
[2026-9-28. : 4:46 pm]
Ultraviolet -- @:@
@:@ shouted: this community still going strong?
Still going.. strong is debatable though.
[2026-9-28. : 4:13 pm]
WeirdoX4857 -- I can't believe this is really been around since 2003 but it does look classic and old asf still better than talking to kids on discord ranting about skibidi toilet and sexuality or whatever mental illness is going on in their heads
[2026-9-28. : 4:11 pm]
WeirdoX4857 -- Nigga how you ask is it still going strong when you get a text every 3 miles per hour or something
[2026-9-28. : 4:10 pm]
WeirdoX4857 -- Where is everybody
[2026-9-28. : 1:21 pm]
@:@ -- this community still going strong?
[2026-9-27. : 4:30 pm]
Oh_Man -- yeah, probs
Please log in to shout.


Members Online: Ultraviolet