I've been trying to code a catch me game (for anyone who doesn't know: a game with a ball that randomly jumps around the screen - the goal is to click the ball before it moves, and not to miss it). I've got the clicks part down. You can click on the ball and you get points. When I try to add punishment for missing - it won't work. Either every click is a miss - no matter what - or no click is a miss. I'm using this code:

A member of the object class

int miss(cursor* mycursor)
	{
		if((mycursor->X() < x || mycursor->X() > x+width || mycursor->Y() < y || mycursor->Y() > y+height) && MouseButton(0))
		{
			return 1;
		}
		else
		{
			return 0;
		}
	}

part of the code in a GameRun() function (target is an object of class cursor):

if(myball.click(&target))
		{
			hits++;
			jump_delay--;
			jump_timer = GetTickCount();
			myball.RandomJump(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
		}
		if(myball.miss(&target))
		{
			MessageBox(hwnd,"GAME OVER","CatchMe",MB_OK);
			PostMessage(hwnd,WM_DESTROY,0,0);
		}

Does the code look okay? I've gone over it tons of times - and I can't find anything wrong.

Recommended Answers

All 3 Replies

As it looks; you're doing one test for the mouse click ( testing MouseButton(0); ) - this means the function 'miss' will only be true if the user clicks the mouse at the exact moment that the code is running. I would set up an event to wait for the mouseclick or do a time-locked loop to poll the mouse until a click occurs; and THEN test to see whether or not it's a hit.

As it looks; you're doing one test for the mouse click ( testing MouseButton(0); ) - this means the function 'miss' will only be true if the user clicks the mouse at the exact moment that the code is running. I would set up an event to wait for the mouseclick or do a time-locked loop to poll the mouse until a click occurs; and THEN test to see whether or not it's a hit.

I think I found the problem - and I'm not really sure if it was what you were talking about.

I was checking to see if the button was down, not if it was just clicked. So whenever you clicked on the ball, it would move, leaving the mouse button down over space that is now empty.

I wrote some new functions to take into account the previous state of the mouse button, so that the function checked for a press, not just that the button was down. It now works,

There once was a farmer named fred
He had an abnormally large head
He near killed the mrs's
With the times of deaths misses
Until he got her tied up to the bed
:P

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.