JavaAppDroid wird Wirklichkeit

Bereits seit langer Zeit angedacht ist, das JavaApp-Framework so zu erweitern, dass aus einem JavaApp-Programm direkt eine App für Android-Smartphones und -Tablets erstellt werden kann. Heute habe ich mit den Arbeiten begonnen und es sieht recht vielversprechend aus. Hier ein erstes Mini-Programm, das einige geometrische Figuren auf das Display zaubert:

public class Test extends JavaApp{
  //hat keine Wirkung:
  public static void main(String[] args){
    new Test();
  }
	
  //muss hinzugefügt werden:
  @Override
  public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState,2);
  }
	
  public void whenProgramStarts(){
    setWindowTitle("Test");
    setColorRGB(0,0,255,0);
    drawFilledCircle(0, x(0), y(0), x(20));
    setColorRGB(0,255,255,255);
    drawFilledEllipsePart(0, x(50), y(50), 
      x(50), y(50), 30, 90);
    setColorRGB(0,0,0,255);
    drawLine(0,x(10),y(10),x(75),y(50));
    setColorRGBA(1,255,0,0,105);
    drawFilledCircle(1,x(20),y(5),x(10));
  }
}

Unser programmiertes Auto

Letzte Woche haben wir Davids ferngesteuertes Auto mit unserem AtMega8 verbunden. Die Steuerung hat auch super funktioniert, wir hatten nur ein Problem mit der Stromversorgung, da der Akku zu schwach auf der Brust war. Trotzdem ist das schon mal ein toller Erfolg und deshalb können wir auch voller Stolz ein erstes Bild zeigen:

Achterbahn

Nach langer Zeit habe ich ein Java-Applet wieder aufbereitet, das ein Freund und ich während unserer Studienzeit geschrieben haben. Dieses ist nun online und hier zu finden.

Mit dem Applet kann man sich selbst eine Achterbahn bauen und diese physikalisch korrekt simulieren. Es ist ein schönes Beispiel dafür, wofür man Mathematik (speziell: Analytische Geometrie oder „Vektorrechnung“) und Physik gebrauchen kann.

Um das Applet ausführen zu können, muss man Java3D installieren.

Micro-Controller-Programmierung in der InfoAG

Nach tagelangem Ringen haben wir nun endlich das AVR StarterKit zum Laufen gebracht und zwar unter Ubuntu 11.10 Oneiric Oncelot.

Das AVR Starterkit besteht aus dem Olimex P-28-Board, dem Atmega8-MicroController, einem USBProg und diversen Kabeln.

Erstes Problem war, dass wir die Anschlüsse nicht richtig gelötet hatten. Glücklicherweise war der Support bei embedded projects super und nachdem ein Techniker daraufgeschaut hatte, lief das Set.

Das nächste Problem war die Software. Unter Windows XP wurde der Controller trotz Installation von WinAVR nicht richtig erkannt. Unter Ubuntu Linux war dies jedoch kein Problem. Um unter Ubuntu die Entwicklungsumgebung einzurichten tut man folgendes:

  1. Software-Pakete installieren: Im Terminal folgenden Befehl eingeben: sudo apt-get install gcc-avr avrdude avr-libc usbprog usbprog-gui libusbprog0 (das letzte Symbol ist eine Null!)
  2. Eclipse(für C++) installieren oder in bestehendes Eclipse das CDT-Plugin einbinden. Letzteres funktioniert so:
    1. eclipse öffnen: Help->Install new software
    2. Als URL http://download.eclipse.org/tools/cdt/releases/indigo eingeben
    3. Fortfahren und installieren
    4. Noch mal Help-> Install new Software
    5. Als URL http://avr-eclipse.sourceforge.net/updatesite eingeben
    6. Fortfahren und installieren
  3. Dann muss man in eclipse den AVRdude einstellen: Windows->Preferences und darin AVRdude. Genau wird dies hier beschrieben (AVR ISP mkII, Port usb, baud 8).

Nun sollte man in eclipse C programmieren können . Zu beachten ist, dass man den Quellcode per Run->Debug kompilieren sollte, denn andernfalls sind zumindest bei uns Fehler aufgetreten.

JavaApp goes to the UK

After the trip to Bletchley Park last friday, a student asked me if I could show him how to write computer programs (I think he mainly thought about ‚computer games‘). Today he and his friend had a closer look with me at the JavaApp framework.

In two hours I gave them a brief introduction (and got them clubbered about the head with information) to programming. They decided to write a version of criss-cross (?, don’t know if it’s correct, it’s Tic Tac Toe in Germany) and this is the result of their doing:

class cross extends JavaApp
{
    int player=1;
    public static void main(String[] args)
    {
        new cross();
    }

    void whenProgramStarts()
    {
        drawLine(0, -320, -50, 320, -50);
        drawLine(0, -320, 50, 320, 50);
        drawLine(0, -50, 240, -50, -240);
        drawLine(0, 50, -240, 50, 240);
    }

    void whenKey1IsPressed()
    {
        if(player==1)
            drawCircle(0, -160, 120, 20);
        else
            drawStringCentered(0, "X", -160, 120);
        if(player==1)
            player=2;
        else
            player=1;
    }
}

Edit: Tommy told me that the game is called ‚Naughts and crosses‘

Vertretungsstunde beim iv6

In der letzten Woche haben die Schülerinnen und Schüler des iv6 in einer Vertretungsstunde ein kleines Computerspiel erarbeitet, eine Variante des Nim-Spiels mit 2 Spielern: In einer Reihe liegen 9 Streichhölzer. Wenn ein Spieler am Zug ist, muss er 1 bis 3 Streichhölzer nehmen. Der Spieler, der das letzte Streichholz nimmt, verliert.

Quellcode: Streichholzspiel.java

Programm: Streichholzspiel.jar

Erstes Treffen der AG „Mathe meets Info“

Am vergangenen Dienstag hat das erste Treffen der neuen AG „Mathe meets Info“ stattgefunden. Leider waren nur zwei Schüler anwesend.

Nachdem organisatorische Dinge geklärt waren, konnten die Schüler ihre Erwartungen an die AG formulieren. Hierbei kristallisierten sich verschiedene Themen heraus, die in Angriff genommen werden sollen.

Das erste Thema, mit dem wir uns beschäftigen wollen, ist das Schreiben eines eigenen kleinen Betriebssystems in Assembler.