Javamentorskap 2006:4

From Carls wiki

Jump to: navigation, search

Fjärde träffen blev till en sorts lovsång till tester och testbaserad programmering. Vi diskuterade även spel av olika slag.

Contents

CLASSPATH

Lite ledning om hur man ställer in CLASSPATH-miljövariablen rätt när man vill inkludera andras bibliotek och syltburkar.

Pong

Vi diskuterade olika sätt att implementera Pong — framförallt, vad som händer när bollen studsar: får den en vertikal hastighet som bara beror på vilken del av plattan den studsar på, eller får den denna nya hastighet plus sin gamla?

Vi pratade även om att man kunde göra en variant där vardera spelaren kontrollerar två sidor, som varsitt L.

Rövarspråket

Förra gången hade vi skrivit ett antal tester för att kontrollera att en hypotetisk rövarspråks-klass fungerade:

String original = "Original";
String result = Robber.toRobber( original );
ok( "Ororigoginonalol".equals( result ) );

String roundtrip = Robber.fromRobber( result );
ok( roundtrip.equals( original ) );

ok( "fofof".equals( Robber.fromRobber( "fofofofofof" ) ) );

Denna kod satte vi sedan in i en testfil, som ärvde av en testbasklass. Slutligen skrev vi steg för steg själva rövarspråksklassen, och fick testerna att gå igenom. Jag lade till ett test under gång för att det inte skulle gå att implementera toRobber så att den returnerade "Ororigoginonalol" oavsett vad man skickade in.

När man kompilerar och kör ovanstående filer, behöver de ligga i en kataloghierarki som reflekterar pakettillhörigheten hos filerna. Till exempel står det

package test;

längst upp i Test.java, så den måste ligga i en katalog med det namnet. Sammantaget måste det se ut så här:

robber (eller något annat namn här)
 |
 +-- robber
 |    |
 |    +-- Robber.java
 |
 +-- test
      |
      +-- Test.java
      |
      +-- TestRobber.java

Transport Tycoon

Här ser ni ännu ett exempel på det isometriska landskapsperspektivet i TT. Roligt stycke till denna bild i Wikipedia-artikeln:

One major weakness of the game is the woeful artificial intelligence which is incapable of constructing sane networks, and often destroys the landscape of a game by leveling mountains (which costs it nothing, nor lowers its local authority rating) in its attempt to connect two railheads.

Det är precis därför jag aldrig låter min armé av själlösa robotar bygga järnväg utan ständigt överinseende. Det slutar bara med att de plattar till alltihopa för att det inte kostar dem någonting. Konsekvensen brukar bli Danmark ungefär.