if(p1&&p2==ap1&&ap2){
...
}
das ist mein code und ich weiß nicht warum es nicht funktioniert
Die Variablen habe ich alle am Anfang festgelegt
if(p1&&p2==ap1&&ap2){
...
}
das ist mein code und ich weiß nicht warum es nicht funktioniert
Die Variablen habe ich alle am Anfang festgelegt
Das ist wahrscheinlich nicht Ihr vollständiger Code... Bitte erklären Sie, was nicht funktioniert...
Beschreibe doch mal in Worten, wann der Ausdruck wahr werden soll?
Da scheint ein Verständnisproblem vorzuliegen.
Gruß Tommy
void setup() {
Serial.begin(115200);
byte p1 = 3, p2 = 1, ap1 = 1, ap2 = 3;
if (p1 && p2 == ap1 && ap2) {
Serial.print("Ich funktioniert.");
} else {
Serial.print("Nein.");
}
}
void loop() {}
alles funktioniert außer diese if abfrage sie will nicht reagieren und führt den code in den Klammern nicht aus
in den klammern steht b1=false;
willst du den kompletten code ist halt sehr lang
es soll den code in den klammern ausführen wenn p1 und p2 gleich groß sind wie ap1 und ap2
Ja...
Ansonsten zeigt der Code von @xfpd deutlich, dass es sehr gut funktioniert
Der Teil der nicht funktioniert ist ganz unten
Mein Lehrer meinte ich soll Snake programmieren:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int h;
int n;
int l;
int r;
int hr;
int vr;
bool hb;
bool vb;
int p1=4;
int p2=0;
int ap1;
int ap2;
bool apfel_;
int punkte;
LiquidCrystal_I2C Lcd(0x27,16,2);
void setup() {
Serial.begin(9600);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
randomSeed(analogRead(A1));
Lcd.init();
Lcd.backlight();
Lcd.setCursor(p1,p2);
Lcd.print("#");
hb=true;
hr=1;
vb=0;
apfel_=false;
}
void loop() {
if(apfel_==false) Serial.println("0");
if(apfel_==true) Serial.println(1);
n=digitalRead(8);
h=digitalRead(9);
l=digitalRead(10);
r=digitalRead(11);
bewegen();
spielfeld();
}
void eingabe() {
if(r==0) {
hb=true;
vb=false;
hr=1;
}
if(l==0) {
hb=true;
vb=false;
hr=0;
}
if(h==0) {
hb=false;
vb=true;
vr=1;
}
if(n==0) {
hb=false;
vb=true;
vr=0;
}
}
void bewegen() {
eingabe();
if(hb==true) {
if(hr==1){
p1=p1+1;
}
if(hr==0){
p1=p1-1;
}
}
if(vb==true) {
if(vr==1){
p2=p2+1;
}
if(vr==0){
p2=p2-1;
}
}
Lcd.clear();
Lcd.setCursor(p1,p2);
Lcd.print("#");
apfel();
delay(250);
}
void neustart() {
p1=4;
p2=0;
vr=0;
hr=1;
vb=false;
hb=true;
apfel_=false;
Lcd.clear();
Lcd.setCursor(0,0);
Lcd.print("Du hast Verloren!");
Lcd.setCursor(3,1);
Lcd.print("Punkte:");
Lcd.setCursor(10,1);
Lcd.print(punkte);
delay(3000);
punkte=0;
Lcd.setCursor(p1,p2);
Lcd.print("#");
}
void spielfeld() {
if(p1==16) {
neustart();
}
if(p1==-1) {
neustart();
}
if(p2==2) {
neustart();
}
if(p2==-1) {
neustart();
}
}
void apfel() {
if(apfel_==false){
ap1=random(1,15);
ap2=random(0,2);
apfel_=true;
}
if(apfel_==true){
Lcd.setCursor(ap1, ap2);
Lcd.print("1");
if(p1&&p2==ap1&&ap2){
apfel_=false;
punkte++;
}
}
}
meinst Du
if (p1 == ap1 && p2 == ap2)
oder etwas Anderes?
Gruß Tommy
Funktioniert danke
Der Ausdruck wird wie folgt ausgewertet
(p1 && (p2 == ap1)) && ap2
P1 wird zu wahr ausgewertet UND p2 hat denselben Wert wie ap1 UND ap2 wird zu wahr ausgewertet
auch danke an dich
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.