Software:Spiel

aus JControlWiki, der freien Wissensdatenbank

Inhaltsverzeichnis

Spiel – StarWars

Abbildung:

Screenshot


Beschreibung:

Bild:info.jpg

1) Schacht
2) Punkte
3) Leben / Energie
4) Flugzeug / Kampfschiff
5) Fadenkreuz


Die Zielkoordinaten (Treffen) sind im:

// Hit
if(X_pos<=-18 && X_pos>=-20 && Y_pos<=-8 && Y_pos>=-10)

definiert, und können beliebig (je nach Geduld / Ausdauergrad ) geändert werden.

Ob die Änderung der Zielkoordinaten Sinn macht: (z.B.)

if(X_pos<=-14 && X_pos>=-24 && Y_pos<=-8 && Y_pos>=-18){


wird dem Programmierer überlassen.


Navigation:

Schuss – S Button (Im IDE Simulator: Enter)
Bewegen – L, R, U, D Buttons (Im IDE Simulator: Pfeiltasten)


Aufgabe:

Die Abgefeuerte „Rakete“ (Schuss) soll den Schacht (1) erreichen.
Das, wird aber durch die (im Hintergrund laufend) „Gravitationsänderungen“ erschwert.


Code:


import jcontrol.io.Display; 
import jcontrol.lang.ThreadExt; 
import jcontrol.io.Keyboard;

public class Spiel {

  /** LCD access */
  Display lcd;
  
  /** Keyboard access */
  Keyboard key;
  
  /** Animation Class ( for future Special effects) */
  // Animation anim;
  
  /** Background picture Thread */
  BackgroundPicture bp;
  
  /** Ship Thread */
  Ship ship;
  
  // Centering picture position
  int X_pos = -20;
  int Y_pos = -30;
   
  // Score
  int score = 0;
  
  // Energy status
  int energy = 50; // (100%)
  
  // Right Edge Limit 
  boolean r_pos_lim = false; 
  
  // Left Edge Limit 
  boolean l_pos_lim = false;
  
  /**
   * constructor
   */
  public Spiel() {
  
    lcd = new Display();    
    key = new Keyboard();
    
    // Ship Thread
    ship = new Ship();
    
    // Background Thread
    bp = new BackgroundPicture();
    
  } // end constructor
  
   /**
	*	Ship Thread Class
	*/
    public class Ship extends Thread {
    
  	int fire_shot = 0; // Shot point
  	
  	/**
   	* constructor
   	*/
  	public Ship() {
  	this.start();
  	}
  	
  	public void run() {
	
	paintBackground(); 

    for (;;) {
    
    lcd.setDrawMode(Display.NEGATIVE);
    
    // Cross Rectangle  ( Crosshair by look)
    if(X_pos<=-18 && X_pos>=-20 && Y_pos<=-8 && Y_pos>=-10){
      		lcd.drawRect(60, 29, 10, 10);
          }
	
    // Ship
    lcd.drawLine(50, 52, 80, 52); // Long line 
    lcd.drawLine(60, 50, 70, 50); // Short line up
    lcd.drawLine(60, 54, 70, 54); // Short line down
    lcd.drawString("X", 47, 50); // X - on the left side 
    lcd.drawString("X", 81, 50); // X - on the right side 
    
    // Crosshair
    lcd.drawLine(60, 34, 63, 34); // left
    lcd.drawLine(67, 34, 70, 34); // right
    lcd.drawLine(65, 32, 65, 30); // up
    lcd.drawLine(65, 38, 65, 36); // down
    
    lcd.setDrawMode(Display.OFF );   

    // Score
    lcd.fillRect(0, 0, 22, 8);
    lcd.drawString(" Score = ".concat(String.valueOf(score)).concat(" "),0, 0);
	
	// Draw Energy status
    lcd.fillRect(0, 60, energy, 4);
    lcd.setDrawMode(Display.XOR);
    //lcd.drawString(" Energy : ",0, 56);
    //lcd.setDrawMode(Display.XOR);
    lcd.drawRect(1, 61, energy, 2);
    lcd.setDrawMode(Display.OFF );
    
    // Keyboard 
	char c = key.read();
	
       	 switch (c) {
             case 'S': {               		
                lcd.setDrawMode(Display.NEGATIVE);
          		fire_shot++;
          				
          		// Shot (Fire)
          		for(int i=0;i<19;i++){
          		lcd.drawLine(50+i, 52-i, 80-i, 52-i);
          			try{
                	ThreadExt.sleep(15);
      				} catch (InterruptedException e) {}
      				
      				lcd.setDrawMode(Display.XOR);
      				lcd.drawLine(50+i, 52-i, 80-i, 52-i);}
                        
                        if(fire_shot == 3) // Opponent Shot
          		fire_L();
          				
          		if(fire_shot == 5){ // Opponent Shot
          		fire_R();
          		fire_shot = 0;}
      					
      			// Hit 
      			if(X_pos<=-18 && X_pos>=-20 && Y_pos<=-8 && Y_pos>=-10){
      				score +=1;
      					
      			// Energy load algorithm
      			int energy_algorithm = 0;
      						
      			// Easy version
      			if (energy_algorithm == score%2) // Or a different one algorithm 
    			energy+=5; // by Easy version
    			if(energy >=50)
    			energy = 50;
    			}

    			//############################
    			// Energy / Life - out !
    			//############################

    			if(energy <=0){ // Game over ?
  
                        //############################
    			// No!- I give you 25 Units
                        //############################

    			energy = 25; // ( WARNING! - Game loop-efect!)

    			} // end for 						
          
          		lcd.setDrawMode(Display.OFF );
          				
          		// Energy status
    			energy-=1;
                        break;
                }
                case 'U': {                
                    	Y_pos +=2;
                    	if(Y_pos>=0)
                	Y_pos = 0;               	
                	break;
                }
                case 'L': {               	
                	X_pos +=2;
                	if(X_pos>=0)
                	X_pos = 0;               	              
                	break;
                }
                case 'D': {           
                	Y_pos -=2;
                	if(Y_pos<=-53){
  			l_pos_lim = true;
  			Y_pos +=2;} 
                	break;
                }
                case 'R':{               
                	X_pos -=2;
                	if(X_pos<=-40){
  			r_pos_lim = true;
  			X_pos +=2;}               	
                	break;
                }
          }// end switch
          
          paintBackground();
          
    	} // end for  	
  	} // end run
  	 	
  	public void paintBackground(){
  	
  	// Draw Background picture   
     lcd.drawImage(new String[] {
	"\uEBE4\uED6B\uEAAD\u2A2B\uECEB\uEAA5\uAD2A\uA52E\uABAC\uABAA\uADAB\uA2AD\uABAC\uABAA\uADAB\uACA3\uADAA\uADA9\uA7A0\uBF7F\uC9B6\u59E7\u9CEB\u2ADD\uB65B\uA2FF\u00FF\uFF5D\u635E\uFFDA\uFFFF\u29FE\uD9E5\u9A25\u5BB6\u6B94\uFF12\uF527\uDA5D\uE3AC\u5B75\uA66D\u5BEA\u55B6\u6D9B\u6AB5\u4D7B\uAAD5\uBBA6\u69DE\uABBA\u23CE\uF1EC\uDDFF\uFFEB\uB6AD\uFFAA\uFFFF\uE916\uD937\u64DF\u22DF\uBAE3\u3A9F\uC07F\uBFA0\uADAB\uACAD\uABAA\uADAA\uADAB\uACAB\uAAAD\uAAA7\uACAB\uAAAD\uAAAB\u2A2D\uAAAD\uEBEA\uED22\uADAD\uAAED\uADEA",
	"\uBFFD\uFFB7\u6FDB\uFF00\uFFFF\u54AD\u595B\u76A6\u6DAB\uDAB6\u2A6D\uDAB6\uAC73\u4CFB\uA699\u7EA1\u5E52\uFFA0\uAF58\uD7AE\u5CD9\uB366\uCD3B\u76ED\uDBA4\u6DFF\u00FF\uFFFB\uA73A\uEFDA\uFFFF\uABFE\u5BFF\uFF00\u32CE\uBAF4\uFEFA\uFA76\uEA5C\uB24E\uFA42\uDEFA\uFAFE\uFA7A\uEA3A\uC6BA\u5D52\uFCFA\uFCFA\uFE50\uEEB4\u00FF\uF77E\u55FF\uFF76\uCDBA\uFF94\uFFFF\u25DA\u359B\uCDEE\u73B9\uEC36\uEB1D\uF6A5\uDD2A\uDA56\u59F6\u9A66\u59B6\uCC5B\u7466\uADBA\uDD6A\uA6B6\u5AE9\uAD36\uD6AB\u5DFD\u00FF\uFFD1\u2EFB\uAEFB\uBFFF",
	"\uBFFF\u7FED\uFBAE\uFF00\uFFFF\uED12\u6D5B\uD5BB\u26EA\uBDA3\u2DDB\u66AC\u5DDB\uB3B6\u2DCD\u1BF6\uF56F\uEAEA\uAB2A\u6DAA\uEDEA\uABAE\uE9AF\uEAAE\uE9E3\uA7EE\uBCBF\u7FD5\uB76A\uFFAA\uFFFF\uBF6B\uFFFF\uFDBF\uFEFE\uFEFF\uFFFE\uFFFE\uFFFF\uFEFF\uFFFE\uFEFF\uFEFF\uFEFF\uFFFE\uFFFF\uFFFE\uFFFE\uFFFE\u7FFE\uF6DF\uFEFE\uD7FF\uEFFF\uFF35\uEE75\uBFCA\uFFBF\uBCEE\uE7A3\uEDEE\uABE9\uEAAD\u6BEA\uAAED\u2B6A\uADEB\uEA6E\uF5F3\u1BED\u2DF6\uAB4B\uDDBA\u26DB\uB5AB\u2AED\u1BEA\uB6AB\uAAFF\u00FF\uFFA5\u2ADF\u7DEB\uFFFF",
	"\uFFDF\uFDFF\uAA7F\uDD00\uFFFF\uA52D\uDBB2\uADB3\u4EF9\u867D\uABDA\u35EB\u966D\u5AE5\u9BFF\u00FF\uFF6D\uBB66\uDF7D\uDB76\uF52F\uFAFB\u76F5\u7EF5\uFEBD\u73FE\uF5F7\uF7F6\u7DF3\uF6FC\uFF7F\uF5FF\uB6FF\uFFF7\uDEBF\uFFBD\u7FFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\u7FFF\u77FF\uF7DF\uFEFF\uDBFF\uEEBD\uFF7F\uFFFC\uF6BB\uFBF6\uBDFB\uF6FD\uF6BD\u76F7\u7CF7\uF6FB\uFBED\uB53E\uEB5D\uFF52\uFFCC\uFFFF\u0AF5\u0DFA\uA55F\u52ED\uAB5A\uB56D\uDDA3\u5CDB\uB624\uDDFF\u00FF\uFF31\uE5BF\u7BD6\uFFFF",
	"\uFFFD\uFBBF\uED5B\uFF00\uFFFF\uE51A\uFDA2\uAD5A\u55BE\uD3A4\u6F9A\u75CE\u99F7\u2AD6\u2AFF\u00FF\uFFED\uB55F\uF9A7\uFD2B\uFF55\uFFFF\uEDBF\u7BEF\u7BF7\uDFFF\uFE5B\uFFFF\uDBFF\u76EF\uFFFF\u6DFF\uDEFF\uFFFB\uDFFB\uEFFF\uFBDF\uBFFD\uFFDF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uD7BF\uFFF7\u6FFF\uFEFF\uEBBF\uFDFF\uF7DF\uFFFB\uDFFD\uEFBD\uFFFF\uD6FF\uBFFF\uF56F\uFFDD\uB77F\uFEFF\uFF92\u7DD7\uBEF5\uAF5A\uFFA9\uFFFF\u555A\uB5A6\u6DDB\u2AF5\uAD2A\uDB3A\uE62B\uFAA5\uDDAA\u55FF\u00FF\uFF92\u75D7\uDDBF\uFDFF",
	"\u77EF\uFFDD\uFFA5\uFF00\uFFFF\uEE11\uAEDA\u37E9\uA65D\uD6B5\uCDBB\u4A7A\uD526\uDDAD\u29FF\u00FF\uFF56\uEDBB\u6EDD\uFB55\u7FA9\uFFFF\u75FF\u7FDB\u7FFD\u56FF\u7FDB\u7FF5\u5F7F\u7BF7\uEDFF\uBFBB\uEEFF\uDFFE\uAF7E\uFFFF\u6BFF\uFFBD\uEFFD\uDFFF\uFFDF\uDFDF\uDFDF\uDFDF\uFFDF\uFB7F\uEDFF\uBEFF\uEFFD\u77FF\uF7FE\uDFFE\uFFDD\u7BEF\uFDF7\u5FFD\u5FFB\uFF55\uFF6E\uFF5F\uEFDD\u7FFB\u6FFF\uFFBB\u625F\uFA55\uF75D\uF7AC\uFFFF\uA54D\uBA55\uED1B\uF425\uEF2A\uDD73\uA46F\uDA64\uBFA2\u5DFF\u00FF\uFF5A\uD1BF\u73EE\uFFFF",
	"\uFFFF\uF6DF\uAEFB\uDE00\uFFFF\uE50A\u7D4A\uFB14\uEB56\uBD52\uED2A\u5BED\uABDA\u655D\uB59F\uC07F\uFFB2\uBBBB\uADA5\uAEBB\uADAB\uBEAD\uBBA5\uBFAD\uABBD\u3BA5\uEFED\uF79B\u7D56\uFBD1\uFFFF\uAFFA\uBFFF\uEBFF\u6FFD\uFFBF\uFFEB\uFFFE\uF7FF\uFEFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFDFB\u6FFD\uF7FF\uDFF7\uFEDF\uFFFD\uDBFF\uDBFF\uFFA9\uFBB6\u6DDA\uF7ED\uEFA9\u3FAD\uADAB\uBDAF\uBBA6\uAEBF\uADBB\uA6A5\uAFBB\uBEB1\u7F7F\uDAB5\uB566\uADAB\u5A6D\uB3CE\uB966\u5BDA\u35E6\uAD5A\uB5FF\u00FF\uFF20\uDF75\uDEFF\uDBFF",
	"\uFFFB\uBF6D\uFFAA\uFF00\uFFFF\u3545\uDBF5\u457E\uA59E\uD96D\uA7B6\uDBA9\u3DD6\uB65B\uEDB3\uB625\uDD53\uAE69\uDFB0\u2F72\u8DF6\u4D7A\u8DEE\u73B9\uDC6E\u37FB\u01FF\uFFEF\uABDA\u6FDA\uFFFF\u5DF7\uDEFF\uFFBB\uFFFB\uD7FE\uEFFF\uFEFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFA\uF7BF\u7EF7\uFFEE\uFFFF\uF6DF\uFDFF\uFF32\uCFBA\uFFAA\uFFFF\uA13B\u67CE\uDDBA\u77EC\u9B52\uDDF3\uA45F\uA956\uEDBA\uA5AD\u5BEA\uB6A5\u5DDB\uB637\u6DCA\uDAB6\u2D6B\uD6BD\uAA35\u6DD6\uAAFF\u00FF\uFF65\uADDB\uBEFF\uEDFF",
	"\uBFBF\u37BF\uBBA6\u3FA0\uBFBF\uB9AD\uACA6\uA3AB\uADAE\uAA2B\uADAA\u2DAD\uAEAA\uA5AD\uAEA9\uAFAA\uABAC\uABAA\u2D2D\uEFF2\u5BAC\u76AB\uAD5E\uDB32\uCD7B\uA4FF\u00FF\uFF5A\uF5AB\uFF52\uFFFF\uBFFB\uD6FF\uEFFE\uF7FF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFD\uEEBF\u7FFE\uEBFE\uDFFF\uFFDB\u34D7\uFEA5\uFFFF\u2DD1\uBEA2\uDD1B\uF62C\uD9B3\u66CD\u1BF6\uED2E\uA9AE\uA9AE\uA9AE\uA92E\uA9AE\uADAB\uAAAD\u2AAD\uABAB\uAEAC\uADA3\uABA6\uADAD\uB8BF\uBFA2\uBBA6\uADAB\uBFBF",
	"\u52DD\uB24E\uF956\uD5BA\u26DC\uAB7A\uA25E\u72CE\u5AFA\uA53A\u65DE\uB9E6\uAA5C\u6BBA\u62DE\u2AEA\uAE58\uF724\uFF00\uFFFF\u2DDA\u235C\uF5A5\u5FD4\uBB46\uD9FF\u00FF\uFF75\uCABE\uF7AD\uFFFF\uEAFF\uFDFF\uFEFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFEF7\uEDFF\uFFB7\u4DFA\uEF9A\uFFFF\uA55A\uB566\uBDC3\u5ED9\u36D5\u65FF\u00FF\uFF00\u7EA2\u6ECA\uBD5A\uE5DE\u12FD\uA25E\uEA9B\uFAA2\u5EB4\u6BDA\u26FC\uAB5A\uBA62\uDDAA\u6C5B\uFAA2\uDEBA\uA2DD",
	"\uFB5A\uF35E\uF5E7\uBEED\u3BF6\uAD7B\u55FF\u55EE\u6BFE\u5DF3\uBEE5\u5EF5\uBDE7\uDD6E\uED5B\uFD56\uFDB5\uEFDA\uFF20\uFFFF\uD525\uDBB6\u4AD5\uBD56\u65DE\u32FF\u00FF\uFF1B\uF47F\uCDF2\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFB\uDA65\uFFAC\uFFFF\u5AB1\u45DE\uBA55\uB5B7\u64AD\u5BFF\u00FF\uFF53\uEDBB\uF6AD\u5BFE\uB967\uDDEA\uBFEA\uDD36\uEDBB\uEDDD\uBB65\uFEAD\uFBDD\uB3BE\uE5BD\u6FDA\u76DD\uF6AE\uFBD6",
	"\u77ED\uFF3D\uEEFD\uF7AD\uFF7D\uEBFF\uB5FF\uD67F\uEDFB\uBFF6\uADFF\uDB7E\uEBFE\uABFF\uF5BF\u75EF\u7EEB\uFEBD\uF7AD\uFFFF\uDD22\uDD92\u7FA0\u5FDB\uA2DD\u55FF\u00FF\uFFF3\uFCFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFCF1\uFFFF\uAD42\uBD56\uDDB3\u6CD3\uB62D\uD3FF\u00FF\uFFF3\uDEB5\uFFEB\uBDF7\uDFFA\uD7FE\uDB7D\uF7DF\uFAB7\uEEFD\uDFEB\uFEDB\uBEF5\uDFFE\uEBBF\u7AEF\uFBDE\uEBFE\uB5FF",
	"\uFBF7\uBFFF\u7EEB\uFFFE\uFFDB\uFFFD\uEFFE\uFFDB\uFFFD\u7FFB\uF67F\uFFFB\uF7EE\uFFFD\uBFFF\uBBFF\uEBFF\u7DFF\uF6BF\uFFFF\u2DAA\u5AE3\u1EF5\u26CD\uFA2A\uCFF3\uFCFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFDF2\uDD22\uDEB5\uA6AD\u5BD6\u29FF\u00FF\uFFDF\uFEBB\uFFFD\uF7BE\u77FF\uFEDF\uFBFF\u76FF\uFFB6\uFFFE\uF7FD\uEF7F\uF6FF\uFDFF\uB6FF\uEFFD\uBF76\uFFEF\uFEFF",
	"\uFFFF\uFFF7\uFFEF\uFFFE\uBFFF\uFFFE\uFFFF\uBF7D\uFFFF\uFFFF\uDFFF\uFFFE\uF7FF\uFF7F\uFFFF\uFBFF\uDFFF\uFFFF\uFFFF\uFFFF\u4DBA\u45EB\u7D8A\uEFF1\uFCFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFCF3\uEC9B\u655D\u52FF\u00FF\uFFFF\uFFFB\u77FF\uFFFF\uFFFF\uDFFE\uFFFF\uFFFF\u7FFE\uFFFE\uFFFF\uFFF7\uFFFF\uF7FF\uFFFF\uFFFF\uF7FF\uEFFF\uFFFF",
	"\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\u119E\uE3F9\uFEFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFEFB\uE69F\u00FF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF"},X_pos,Y_pos ); 	
  	}	
  	
  		// Opponent Shot (Fire left)- Method
  		public void fire_L(){
  		
  		for(int x=0;x<14;x++){
         	lcd.drawLine(40+(x+x), 20+(x+x), 35+x, 20+(x+x));
          	try{
              	ThreadExt.sleep(20);
      			} catch (InterruptedException e) {}		
      		lcd.setDrawMode(Display.XOR);
      		lcd.drawLine(40+(x+x), 20+(x+x), 35+x, 20+(x+x));
      		}      		
      		// Ship (Background) moving
                if(X_pos<-40)
                X_pos -=4;
                if(Y_pos>= -51)
                Y_pos -=4; 		
  		}
  		
  		// Opponent Shot (Fire right)- Method
  		public void fire_R(){
  		
  		for(int x=0;x<14;x++){
         	lcd.drawLine(85-(x+x), 20+(x+x), 90-x, 20+(x+x));
          	try{
              	ThreadExt.sleep(20);
      			} catch (InterruptedException e) {}
      		lcd.setDrawMode(Display.XOR);
      		lcd.drawLine(85-(x+x), 20+(x+x), 90-x, 20+(x+x));}
      		
      		// Ship (Background) moving
                if(X_pos<-1)
                X_pos +=4;
                if(Y_pos>= -51)
                Y_pos -=4;	
  		} // end for 	
  } // end Ship Thread Class
  
  
  	/**
  	 * Background Thread Class
  	 */
    public class BackgroundPicture extends Thread {
    

  	/**
   	* constructor
   	*/
  	public BackgroundPicture() {
  	this.start();
  	}
  	
  	public void run() {
  	
  	int position = 0; // Background pointer ?
  	
  		for(;;){ //Clock (cycles)
  		position++;
  			if(position == 1)
  			moving_X(position);
  			try{
        	ThreadExt.sleep(500); // 400 OK
      		} catch (InterruptedException e) {}
      	
      	moving_Y(position);
      	// reset to zero 
  		position = 0;	
  	} // ende for	
  } // ende run
  	
  		// move the X position
  		public void moving_X(int x_schritte){
  			
  			if(X_pos>= -40 || !r_pos_lim)
  			X_pos -= x_schritte;

  			if(X_pos<=-40){
  			r_pos_lim = true;
  			X_pos += x_schritte;}				
  		}
  		
  		// move the Y position 
  		public void moving_Y(int y_schritte){
  		
  			if(Y_pos>= -53 || !l_pos_lim)
  			Y_pos -= y_schritte;
  						
  			if(Y_pos<=-53){
  			l_pos_lim = true;
  			Y_pos += y_schritte;}  		
  		} 	
  } // end Background Thread Class
  
  
  /**
   * main method. Program execution starts here.
   */
  public static void main(String[] args) {
    new Spiel();
  }
}
'Persönliche Werkzeuge