All pastes #1083580 Raw Edit

Unnamed

public text v1 · immutable
#1083580 ·published 2008-07-26 17:13 UTC
rendered paste body
#include <stdio.h>
#include <stdlib.h>
#include <gccore.h>
#include <wiiuse/wpad.h>
#include <iostream>
#include <unistd.h>

static void *xfb = NULL;
static GXRModeObj *rmode = NULL;

using namespace std;

void init(void);
int getnumber(void);
int cycle(void);
int random(int min, int max);

 //---------------------------------------------------------------------------------
int main(int argc, char **argv) 
{//---------------------------------------------------------------------------------
	init();	//sets up Wiimote, Video, and terminal.  Also displays a message.
	int guess = 0;
	while(1)
	{
		WPAD_ScanPads();
		u32 pressed = WPAD_ButtonsDown(0);
		cout << "\x1b[2;0H";
		cout << "(C) 2008 Vader347" << endl;
		cout << "Press RIGHT to increase by 1, LEFT to decrease by 1." << endl << "Once you have the number you  want, press A." << endl;
		cout << "Press Home at anytime to return to loader" << endl;
		if ( pressed & WPAD_BUTTON_HOME )
			exit(0);
		guess = getnumber();	//get user input returns double
		int range = cycle();
		int max;
		switch (range)
		{	
			case 1:
				max = 10;
				break;
			case 2:
				max = 100;
				break;
			case 3:
				max = 1000;
				break;
		}
		int nRandom = random(1, max);
		if (nRandom == guess)
		{
			cout << "You Win" << "Now go waste your time somewhere else" << endl;
			sleep(3);
			exit(0);
		}
		if (guess < nRandom)
		cout << "higher" << endl;
		if (guess > nRandom);
		cout << "lower" << endl;
		VIDEO_WaitVSync();
	}
	return 0;
}

void init(void)
{
	VIDEO_Init();
	WPAD_Init();
	rmode = VIDEO_GetPreferredMode(NULL);
	xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
	console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
	VIDEO_Configure(rmode);
	VIDEO_SetNextFramebuffer(xfb);
	VIDEO_SetBlack(FALSE);
	VIDEO_Flush();
	VIDEO_WaitVSync();
	if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();
}

int getnumber(void)
{
	int number = 0 ;
	while(1)
	{
		WPAD_ScanPads();
		u32 pressed = WPAD_ButtonsDown(0);	
		if ( pressed & WPAD_BUTTON_HOME )
			exit(0);
		if ( pressed & WPAD_BUTTON_UP )
		{
			number = (number + .000001);
			cout <<"\r"<< number;
		}
		if ( pressed & WPAD_BUTTON_DOWN )
		{
			number = (number - .000001);
			cout <<"\r" << number;
		}
		if ( pressed & WPAD_BUTTON_RIGHT )
		{
			number++;
			cout << "\r" << number;
		}
		if ( pressed & WPAD_BUTTON_LEFT )
		{
			number--;
			cout << "\r" << number;
		}
		if ( pressed & WPAD_BUTTON_A && number != 0 )
			break;
		VIDEO_WaitVSync();
	}
return number;
}

int cycle(void)
{
	string choice;
	int nCycle = 1;
	while(1)
	{
		VIDEO_WaitVSync();
		WPAD_ScanPads();
		u32 pressed = WPAD_ButtonsDown(0);
		if ( pressed & WPAD_BUTTON_UP )
			nCycle++;
		if ( pressed & WPAD_BUTTON_DOWN )
			nCycle--;
		if ( pressed & WPAD_BUTTON_A )
			break;
		if ( pressed & WPAD_BUTTON_HOME )
			exit(0);
		if ( nCycle > 3 )
			nCycle = 1;
		if ( nCycle < 1 )
			nCycle =4;
		switch (nCycle)
		{
			case 1:
				choice = "1-10";
				break;
			case 2:
				choice = "1-100";
				break;
			case 3:
				choice = "1-1000";
				break;
		}
		cout << "\r" << choice;
		VIDEO_WaitVSync();
	}
	return nCycle;	
}

int random(int min, int max)
{
    int range=(min-max)+1; 
    int randomint = rand() % range + min;
    return  randomint;
}