Breakout Extreme

Discussion of challenges you have already solved
Post Reply
gfoot
Posts: 269
Joined: Wed Sep 05, 2007 11:34 pm
Location: Brighton, UK

Breakout Extreme

Post by gfoot »

adum said in the other thread he'd made it harder to figure out from the code - that certainly scuppered my first few attempts. :) The message displayed depends on the levels having the right numbers of blocks in them, and my first attempts were all based around not instantiating all the blocks, and/or setting the block count to 1 rather than properly counting the blocks.

Neither method works properly because the password just comes out wrong. I wonder whether this is what adum anticipated? I was a little disappointed that my next stab worked without a hitch - that is, making blockDied always signal the end of the level, regardless of the actual remaining block count.
User avatar
adum
Posts: 392
Joined: Thu Apr 19, 2007 12:49 pm
Contact:

Post by adum »

hmmn, that's an interesting approach. i probably should have put in more internal checks.

how did other people solve this one?
tails
Posts: 191
Joined: Tue Jun 10, 2008 7:51 pm
Location: Tokyo

Post by tails »

I remember I decompiled the class objects, simplified them by hand, figured out how to calculate each character, and wrote a script that output the string from the level table.
tog
Posts: 70
Joined: Fri Nov 14, 2008 11:23 am
Location: Germany

Post by tog »

I modified the level-strings to bottomBounce=topBounce=true and let it run. Gets funny with splitter-bonus 8-D
snibril
Posts: 31
Joined: Sun Oct 26, 2008 11:18 pm

Post by snibril »

The first eleven letters I got by simply playing it. The last two I got with an memory editor, setting the block count to 1. Works not always right, but I saw from the known first letters, that this is a bit tricky. Two tries, and I got the last two letters.
osterlaus
Posts: 20
Joined: Sun Nov 02, 2008 6:04 pm

Post by osterlaus »

snibril wrote:The first eleven letters I got by simply playing it. The last two I got with an memory editor, setting the block count to 1. Works not always right, but I saw from the known first letters, that this is a bit tricky. Two tries, and I got the last two letters.
This is what I did in both Breakout-challenges - so the extreme one was not harder than the usual.
dotme
Posts: 10
Joined: Sun Nov 16, 2008 6:45 pm

Post by dotme »

I hate KISS, but after my first attempt to modify "blockDied" failed, I went the same way like tog - making all borders to bounce and left the applet alone.
Changing the levels so that they consist only of one block showed that the solution seems to be based on the number of blocks?!
Zeta
Posts: 62
Joined: Thu Apr 16, 2009 3:37 pm

Post by Zeta »

This worked for me:

Private field S$5S in BreakoutGame contains the level number.
I introduced an additional field 'level' with public access and replaced every
use of S$5S with 'level' (simply changing the access modifier didn't work,
probably a glitch in the bytecode editor).

Then I subclassed BreakoutApplet and added the following code:

Code: Select all

        final BreakoutGame game = theApplet.Il1l;

        for(int i = 0; i<15; i++ ) {
            game.level = i;
            Thread thread = new Thread(){
                public void run() {
                    game.start();
                }
            };
            thread.run();
            if (i<14) {
                game.stop();
            }
        }
The game starts up at level 15 and the answer presents itself.
User avatar
sabretooth
Posts: 61
Joined: Sun Jul 12, 2009 3:13 pm

Post by sabretooth »

solved all 13 levels by hand with no modification. I love breakout ;)

sabre
nighthalk
Posts: 41
Joined: Fri Jul 31, 2009 8:22 pm

Post by nighthalk »

i did it modifying only a single byte (in the java bytecode), i found where the lives are subtracted(by changing all the possible subtracts in the file that were just before a itol bytecode decompiling each one), and changed it to add, boom i can never ever loose, now the last level was still a @$%^ but i eventually got it.

(i wish there was a program like ollydbg for java files heh, one that can run the class without any form of source code)
contagious
Posts: 36
Joined: Tue May 12, 2009 6:08 pm
Location: Greece

Post by contagious »

with cheat engine :D
AMindForeverVoyaging
Forum Admin
Posts: 497
Joined: Sat May 28, 2011 9:14 am
Location: Germany

Post by AMindForeverVoyaging »

contagious wrote:with cheat engine :D
Yeah, this. At first I played it by hand (solved 'Breakout' that way), but at Level 11 I got fed up with it and resorted to cheating. :)
Shiadra
Posts: 1
Joined: Tue Jun 19, 2012 4:00 pm

Post by Shiadra »

Just wrote some code that grants me a bonus non stop and restarted the game until i got triple bonus :D Then u will never have to worry about having no more balls

Code: Select all

public class App extends BreakoutApplet implements Runnable {
	Thread cheat;
	BreakoutGame game;
	public void init(){
		super.init();
		cheat = new Thread(this);
	}
	
	public void start(){
		super.start();
		game = super.Il1l;
		cheat.start();
	}
	
	public void run(){
		Bonus b = game.getRandomBonus();
		while(true){
			game.setBonus(b);
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
User avatar
Hippo
Posts: 339
Joined: Sat Feb 01, 2014 12:05 am
Location: Praha 5

Post by Hippo »

Hmm, I first let the blockadd not to increment but set to 1 ... and got wrong password.
Next attempt was to blockdied sets the count to 0 ... and failed to write password correctly !!!
Than I have played by hand (OK ... I let my doughter to play, but I was more successfull anyways) and I got first three letters equal to the 2nd attemt.
I have tried changing last letter on remembered password from 2nd attempt ... and failed.
Finally I have returned to the blockdied method and writen password well.
Post Reply