You are not logged in.
Hi there,
I'm trying to create some code that will draw hexagons to the screen. I've got it so I can make one okay, but if I have 2 and they overlap, the program crashes on closing.
Also, without having them overlap, when I quit the program, the hexagons disappear one at a time. Ideally I'd want them to go away at the same time.
Also - I tried putting the render calls in main() after the calls to drawHexagon(), but that didn't seem to help things.
Here is the code thus far:
#include "../../../GRRLIB/GRRLIB/GRRLIB.h"
#include <stdlib.h>
#include <wiiuse/wpad.h>
#include <math.h>
#define GRRLIB_BLACK 0x000000FF
#define GRRLIB_GREEN 0x008000FF
#define GRRLIB_PURPLE 0x800080FF
Mtx GXmodelView2D;
void drawHexagon(float x, float y, float side, u32 color);
int main() {
u32 wpaddown;
u32 wpadheld;
GRRLIB_Init();
WPAD_Init();
while(1) {
WPAD_ScanPads();
wpaddown = WPAD_ButtonsDown(0);
wpadheld = WPAD_ButtonsHeld(0);
GRRLIB_FillScreen(GRRLIB_BLACK);
drawHexagon(100, 100, 25, GRRLIB_GREEN);
drawHexagon(200, 200, 25, GRRLIB_PURPLE);
if(wpaddown & WPAD_BUTTON_A) {
break;
}
if(wpadheld & WPAD_BUTTON_A) {
break;
}
}
GRRLIB_Exit(); // Be a good boy, clear the memory allocated by GRRLIB
return 0;
}
void drawHexagon(float x, float y, float side, u32 color){
float h = sin(30 * M_PI / 180) * side;
float r = cos(30 * M_PI / 180) * side;
Vector hex[] = {{x,y,0},
{x+side,y,0},
{x+side+h,y+r,0},
{x+side,y+r+r,0},
{x,y+r+r,0},
{x-h,y+r,0},
{x,y,0}};
GRRLIB_NGone(hex,color,7);
GRRLIB_Render();
}If you are curious, I found the info on drawing hexagons here.
Thanks for any insight you can give!
Last edited by Hizna (2009-06-27 06:35:10)
Offline
try this (tested in dolphin)![]()
dolphin crashed with render in the function.
and color needs to be an array of color at each vector point.
#include "../../../GRRLIB/GRRLIB/GRRLIB.h"
#include <stdlib.h>
#include <wiiuse/wpad.h>
#include <math.h>
#define GRRLIB_BLACK 0x000000FF
#define GRRLIB_GREEN 0x008000FF
#define GRRLIB_PURPLE 0x800080FF
Mtx GXmodelView2D;
void drawHexagon(float x, float y, float side, u32 color);
int main() {
u32 wpaddown;
u32 wpadheld;
GRRLIB_Init();
WPAD_Init();
while(1) {
WPAD_ScanPads();
wpaddown = WPAD_ButtonsDown(0);
wpadheld = WPAD_ButtonsHeld(0);
GRRLIB_FillScreen(GRRLIB_BLACK);
drawHexagon(100, 100, 25, GRRLIB_GREEN);
drawHexagon(125, 125, 25, GRRLIB_PURPLE);
GRRLIB_Render();
if(wpaddown & WPAD_BUTTON_A) {
break;
}
if(wpadheld & WPAD_BUTTON_A) {
break;
}
}
GRRLIB_Exit(); // Be a good boy, clear the memory allocated by GRRLIB
return 0;
}
void drawHexagon(float x, float y, float side, u32 color){
float h = sin(30 * M_PI / 180) * side;
float r = cos(30 * M_PI / 180) * side;
int i;
Vector hex[] = {{x,y,0},
{x+side,y,0},
{x+side+h,y+r,0},
{x+side,y+r+r,0},
{x,y+r+r,0},
{x-h,y+r,0},
{x,y,0}};
u32 ncolor[7];
for (i=0;i<7;i++)
ncolor[i]=color;
GRRLIB_NGone(hex,ncolor,7);
}Last edited by eckyecky (2009-06-29 05:37:11)
Offline