Spiele

Die es sich anzusehen lohnt:


Banished ist eine geniale Aufbau Simulation, sehr ausgeglichen, leicht zu verstehen und trotz weniger Möglichkeiten stunden lang fesselnd. Großes sucht potential.

AowSM ist der direkte Vorläufer von Age of Wonders III und hat mich lange sehr fasziniert. Ich bin auf den neuen teil sehr gespannt.
Quelle: Steam
  

aufgabe gelungen :D


Quelle: Steffen
  

Wechsel Erfolgreich

Nachdem sich meinSamsung Galaxy S3 durch einen "Sudden Death" verabschiedet hat...
(Ich dachte das Problem hätte Samsung mit dem letzten Update gefixt) bin ich nun auf
Windows Phone 8 umgestiegen.


Danke Samsung....
Quelle: photo: Quelle.de / produktphoto
  

mein erstes arduino uno programm

Quellcode:
#include <TVout.h>
#include <fontALL.h>

TVout TV;

int bx = 0;
int by = 0;
int dx = 0;
int dy = 0;

int leftP = 0;
int rightP =0;
char gewertet = 0;

int ballsize = 3;
int paddle = 20;
int paddle_cpu = 15;

int btn = 500;

void setup() {
  TV.begin(PAL,128,96);
  TV.select_font(font6x8);

  //bis ultraschall sensoren da 
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
 
  xinit();
  Serial.begin(9600);
}

void xinit(){
 randomSeed(analogRead(5));
 if(random(1,2)==2){dx=1;}else{dx=-1;}
 if(random(1,2)==2){dy=1;}else{dy=-1;}
 bx = TV.hres()/2;
 by = TV.vres()/2;
 TV.fill(BLACK);
}

void loop() {
 int p;
 int inPin;
 inPin = analogRead(0); // <-- read poti 0 - 5 volts
 //bis wieder sensor buttons
 if(digitalRead(2) == LOW){btn-=50;if(btn<0){btn=0;}}
 if(digitalRead(3) == LOW){btn+=50;if(btn>1000){btn=1000;}}
 
 if(digitalRead(4) == HIGH){btn = (by-1) * 10;}
 inPin= btn;
 //end
 
 for(p= 0; p<5; p++){ //Clear bars
   TV.draw_line(p,0,p,96,BLACK);
   TV.draw_line(127-p,0,127-p,96,BLACK);
 }
 
 int ps = paddle_cpu;
 int top = by -5;
 if(top + ps > 96){top = 95 - ps;}
 if(top < 1){top=0;}
 for(p= 0; p<5; p++){ //draw right bar
   TV.draw_line(127-p,top,127-p,top+ps,WHITE);
 }
  
 ps = paddle;
 top = (inPin/10);
 if(top + ps > 96){top = 96 - ps;}
 for(p= 0; p<5; p++){ //draw left bar
   TV.draw_line(p,top,p,top+ps,WHITE);
 }
 
 TV.draw_circle(bx,by,ballsize,BLACK,BLACK); //clear ball
 
 if(bx < ballsize+2){dx=1;}
 if(bx > 126 - ballsize){dx=-1;}
 
 if(by < ballsize){dy=1;}
 if(by > 96 - ballsize){dy=-1;}
 
 bx = bx + dx;
 by = by + dy;
 
 TV.draw_circle(bx,by,ballsize,WHITE,WHITE); // draw ball
 
 if(dx == 1 && bx > (123-ballsize) && gewertet == 0){ //right panel
   unsigned char f = TV.get_pixel(bx + ballsize + 1,by);
   gewertet = 1;
   if(f == 0){leftP = leftP + 1;xinit();}
   Serial.println(f);
 }
 
 if(bx > 60 && bx < 70){ //center reset
   gewertet = 0;
 }
 
 if(dx == -1 && bx < (ballsize+2) && gewertet == 0){ //left panel
   unsigned char f = TV.get_pixel(bx - ballsize - 1,by);
   gewertet = 1;
   if(f == 0){rightP = rightP + 1;xinit();}
   Serial.println(f);
 }
 
 TV.set_cursor(8,0);
 TV.print("LEFT: ");
 TV.print(leftP);
 TV.print(" RIGHT: ");
 TV.print(rightP);
 
 TV.delay(20);
}


Neue Version:
/*********************************************
 * Ping Pong by Steffen Flamm
 * Visit me at flamm.me
 *********************************************/
#include <TVout.h>
#include <fontALL.h>

#define BALLSIZE       3
#define PADDLESIZE     20
#define PADDLEWIDTH    5


TVout TV;

int ballx, dirx;
float diry, bally;
char lostball = 0;

int PaddleL, PaddleR;
int halfpaddle = PADDLESIZE / 2;

int scoreL, scoreR;

int btn = 500;

/* collision detection */
char _ce =0;
void collision(){
  //TV.hres() x
  //TV.vres() y
  if(ballx > TV.hres() - (PADDLEWIDTH + BALLSIZE) && _ce < PADDLEWIDTH - BALLSIZE){ //right
    _ce += 1;
    if(bally<(PaddleR + (halfpaddle / 2)) && bally>(PaddleR - (halfpaddle / 2))){//kleiner ausgangswinkel
      diry = (diry<=0.0)?0.5:-0.5;
      if(bally>(PaddleR - (halfpaddle / 2))){
        diry *= -1;
      }
      dirx *= -1;
      return playSOUND(0);
    }
    if(bally<(PaddleR + (halfpaddle-2)) && bally>(PaddleR - (halfpaddle-2))){//grosser ausgangswinkel
      diry = (diry<=0.0)?0.75:-0.75;
      if(bally>(PaddleR - (halfpaddle-2))){
        diry *= -1;
      }
      dirx *= -1;
      return playSOUND(0);
    }
    if(bally<(PaddleR + (halfpaddle+4)) && bally>(PaddleR - (halfpaddle+4))){//grosser ausgangswinkel
      diry = (diry<=0.0)?1.25:-1.25;
      if(bally>(PaddleR - (halfpaddle+3))){
        diry *= -1;
      }
      dirx *= -1;
      return playSOUND(0);
    }
    if(_ce >= PADDLEWIDTH - BALLSIZE){
      lostball = 2;
      return playSOUND(3);
    }

  }
  else if(ballx < (PADDLEWIDTH + BALLSIZE) && _ce < PADDLEWIDTH - BALLSIZE){ //left
    _ce += 1;
    //PaddleL
    if(bally<(PaddleL + (halfpaddle / 2)) && bally>(PaddleL - (halfpaddle / 2))){//kleiner ausgangswinkel
      diry = (diry<=0.0)?0.5:-0.5;
      if(bally>(PaddleL - (halfpaddle / 2))){
        diry *= -1;
      }
      dirx *= -1;
      return playSOUND(0);
    }
    if(bally<(PaddleL + (halfpaddle-2)) && bally>(PaddleL - (halfpaddle-2))){//grosser ausgangswinkel
      diry = (diry<=0.0)?0.75:-0.75;
      if(bally>(PaddleL - (halfpaddle-2))){
        diry *= -1;
      }
      dirx *= -1;
      return playSOUND(0);
    }
    if(bally<(PaddleL + (halfpaddle+4)) && bally>(PaddleL - (halfpaddle+4))){//grosser ausgangswinkel
      diry = (diry<=0.0)?1.25:-1.25;
      if(bally>(PaddleL - (halfpaddle+3))){
        diry *= -1;
      }
      dirx *= -1;
      return playSOUND(0);
    }
    if(_ce >= PADDLEWIDTH - BALLSIZE){
      lostball = 1;
      return playSOUND(3);
    }

  }
  else{ //idle
    _ce = 0;
  }
}

/* Paddle */
int _paddelhelper(int pos){
  if(pos < 0){
    return 0;
  }
  else if(pos < (TV.vres() - PADDLESIZE)){
    return pos;
  }
  else{
    return TV.vres() - PADDLESIZE;
  }
}

void drawpaddles(int l, int r){
  int lpTop = _paddelhelper(l);
  int rpTop = _paddelhelper(r);
  /* clear ball */
  TV.draw_circle(ballx,(int)bally,BALLSIZE,BLACK,BLACK); //clear ball
  /* draw bars */
  for(int p= 0; p<=PADDLEWIDTH; p++){ //Clear bars
    TV.draw_line(p,0,p,TV.vres(),BLACK); //left bar
    TV.draw_line(p,lpTop,p,lpTop + PADDLESIZE,WHITE);
    TV.draw_line((TV.hres()-1)-p,0,(TV.hres()-1)-p,TV.vres(),BLACK); //right bar
    TV.draw_line((TV.hres()-1)-p,rpTop,(TV.hres()-1)-p,rpTop + PADDLESIZE,WHITE);
  }
  PaddleL = lpTop + halfpaddle; 
  PaddleR = rpTop + halfpaddle;
  return;
}

/* Ball */
void drawBall(){
  float nbally = bally + diry;
  if(nbally < BALLSIZE || nbally > TV.vres() - BALLSIZE){
    diry = diry *-1; 
    bally = nbally;
    playSOUND(1);
  }
  else{
    bally = bally + diry;
  }
  ballx += dirx;
  collision();
  TV.draw_circle(ballx,(int)bally,BALLSIZE,WHITE,WHITE); // draw ball
}

/* init */
void pingponginit(){
  lostball = 0;
  ballx = TV.hres()/2;
  bally = TV.vres()/2;
  PaddleL = bally;// - halfpaddle;
  PaddleR = PaddleL;
  dirx = -1;
  diry = 0;

  switch (random(4)){
  case 0:
    diry = 0; 
    break;
  case 1:
    diry = 0.5; 
    break;
  case 2:
    diry = 0.75; 
    break;
  case 3:
    diry = 1.25; 
    break;
  }
  dirx = (random(2)!=0)?-1:1;
  diry = (random(2)!=0)?diry*-1:diry;
  TV.fill(BLACK);
}

/* SOUNDS */

void playSOUND(int w){
  switch (w){
      case 0: //paddle
        TV.tone(222,50);
        break;
      case 1: // wall
        TV.tone(333,50);
        break;
      case 3: // loose
        TV.tone(111,200);
        break;
  }
}

/*LOST*/

void lostGame(){
  if(lostball == 1){
    scoreR++;
  }
  else{
    scoreL++;
  }
  TV.delay(1000);
  TV.fill(BLACK);
  TV.set_cursor(0,44);
  TV.print("LEFT: ");
  TV.print(scoreL);
  TV.print(" RIGHT: ");
  TV.println(scoreR);
  TV.delay(2000);
  TV.set_cursor(0,66);
  TV.print("Weiter in 3... ");
  TV.delay(1000);
  TV.set_cursor(0,66);
  TV.print("Weiter in 2... ");
  TV.delay(1000);
  TV.set_cursor(0,66);
  TV.print("Weiter in 1... ");
  TV.delay(1000);
  TV.fill(BLACK);
}
/* main */
void setup(){
  TV.begin(PAL,128,96);
  TV.select_font(font6x8);

  //bis ultraschall sensoren da 
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);

  randomSeed(analogRead(5));
  pingponginit();
  //debug
  Serial.begin(9600);
}

/* simple ki */
int movePaddle(int paddle){
    int ball = bally - halfpaddle;
    int padd = paddle - halfpaddle;
    int half = halfpaddle - halfpaddle / 3;
    if((paddle + half ) > bally && (paddle - half) < bally){return padd;}
    
    if(random(9)>2){ //move
       if(padd<(ball)){return ++padd;}else{return --padd;}
    }
    return padd;
}

void loop(){
  int cpuPaddleRight = bally - halfpaddle;
  int inPin;
  inPin = analogRead(0); // <-- read poti 0 - 5 volts 0 - 1023
  //bis wieder sensor buttons
  if(digitalRead(2) == LOW){
    btn-=50;
    if(btn<0){
      btn=0;
    }
  }
  if(digitalRead(3) == LOW){
    btn+=50;
    if(btn>1023){
      btn=1023;
    }
  }

  inPin = (float)btn / 1023.0 * (float)TV.vres();
  if(digitalRead(4) == HIGH){
    inPin = cpuPaddleRight;
  }


  //end


  //drawpaddles(inPin, cpuPaddleRight); //(TV.vres() / 2) - halfpaddle);
  drawpaddles(movePaddle(PaddleL), movePaddle(PaddleR)); //rein KI
  drawBall();
  if(lostball != 0){
    lostGame(); 
    pingponginit();
  }
  //tone(frequency,duration);
  //TV.delay(20);


/*
  if (Serial.available() > 0) {
    // read the incoming byte:
    int incomingByte = Serial.parseInt();//Serial.read();

    // say what you got:
    Serial.print("I received: ");
    Serial.println(incomingByte, DEC);
    TV.tone(incomingByte,100); ///111 222 333
  }*/

  TV.delay_frame(1);
}





Quelle: tvout

  

super präsentationsmethode

  
neuere  |  ältere