Ich hoffe mir kann hier jemand helfen Aus Langeweile hab ich in C++ eine Konsolenanwendung geschrieben wo das Javascript Spiel Cookie Clicker nachgestellt wird.
#include <iostream>
#include <windows.h>
#include <cstring>
#include <cmath>
#include <conio.h>
using namespace std;
int main (int argc, char* argv[]){
int weiter=1;
int Mouse=1;
long long Cookies=0;
long long Cin,Shop;
long int Cursor=70,Cursoranzahl=0,Cursorwert=1;
long int Grandma=500,Grandmaanzahl=0,Grandmawert=2;
long int Farm=1800,Farmanzahl=0,Farmwert=4;
long int Factory=6000,Factoryanzahl=0,Factorywert=8;
long int Mine=9000,Mineanzahl=0,Minewert=16;
long int Ship=23000,Shipanzahl=0,Shipwert=32;
long int Lab=60000,Labanzahl=0,Labwert=64;
cout <<"CMD Cookie Clicker alpha v0.1.6\n";
do{
cout <<"\nMenue\n\n1- Cookies 'klicken'\n2- Shop\n3- Cookies\n0- Beenden\n";
cin >> Cin;
if (Cursoranzahl != 0)
{
Cookies = Cookies+(Cursoranzahl*Cursorwert);
}
if(Grandmaanzahl != 0)
{
Cookies = Cookies+(Grandmaanzahl*Grandmawert);
}
if(Farmanzahl !=0)
{
Cookies = Cookies+(Farmanzahl*Farmwert);
}
if(Factory !=0)
{
Cookies = Cookies+(Factoryanzahl*Factorywert);
}
if(Mine !=0)
{
Cookies = Cookies+(Mineanzahl*Minewert);
}
if(Ship !=0)
{
Cookies = Cookies+(Shipanzahl*Shipwert);
}
if(Lab !=0)
{
Cookies = Cookies+(Labanzahl*Labwert);
}
if(Cin >=1111)
{
weiter=2;
}
//------------------------------------------------------------------------------------------------------------------------------------------------
if (Cin == 1)
{goto clicker;
cout <<"Linke Maustaste in der Konsole druecken um Cookies zu generieren, \ndruecke das Mausrad um ins Menue zurueck gelangen\n";
Sleep(4000);
clicker: do
{
INPUT_RECORD inRec;
HANDLE hcon = GetStdHandle(STD_INPUT_HANDLE);
DWORD nCnt = 0;
BOOL bOK = ReadConsoleInput(hcon, &inRec, 1, &nCnt);
if(bOK && nCnt == 1)
{
if(inRec.EventType == MOUSE_EVENT)
{
if(inRec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
Cookies++;
Sleep(50);
cout <<Cookies<<" Cookies\n";
if(inRec.Event.MouseEvent.dwButtonState == FROM_LEFT_2ND_BUTTON_PRESSED)
Mouse = 2;
}
}
}while(Mouse == 1);
}
//------------------------------------------------------------------------------------------------------------------------------------------------
if(Cin ==2){
cout <<"1- Cursor / Ein Cursor kostet "<<Cursor<<" Cookies\n";
cout <<"2- Grandma / Eine Grandma kostet "<<Grandma<<" Cookies\n";
cout <<"3- Farm / Eine Farm kostet "<<Farm<<" Cookies\n";
cout <<"4- Factory / Eine Factory kostet "<<Factory<<" Cookies\n";
cout <<"5- Mine / Eine Mine kostet "<<Mine<<" Cookies\n";
cout <<"6- Shipment / Ein Shipment kostet "<<Ship<<" Cookies\n";
cout <<"7- Alchemy Lab / Ein Alchemy Lab kostet: "<<Lab<<" Cookies\n";
cout <<"0- Zurueck\n";
cin >> Shop;
if (Shop == 1 && Cookies >=Cursor)
{
Cookies = Cookies - Cursor;
Cursor=Cursor*2;
Cursoranzahl = Cursoranzahl+1;
Shop = 0;
}
else if (Shop == 2 && Cookies >=Grandma)
{
Cookies = Cookies - Grandma;
Grandma=Grandma*2;
Grandmaanzahl = Grandmaanzahl+1;
Shop = 0;
}
else if(Shop == 3 && Cookies >=Farm)
{
Cookies = Cookies - Farm;
Farm=Farm*2;
Farmanzahl = Farmanzahl+1;
Shop = 0;
}
else if(Shop == 4 && Cookies >=Factory)
{
Cookies = Cookies - Factory;
Factory=Factory*2;
Factoryanzahl = Factoryanzahl+1;
Shop = 0;
}
else if(Shop == 5 && Cookies >=Mine)
{
Cookies = Cookies - Mine;
Mine=Mine*2;
Mineanzahl = Mineanzahl+1;
Shop = 0;
}
else if(Shop == 6 && Cookies >=Ship)
{
Cookies = Cookies - Ship;
Ship=Ship*2;
Shipanzahl = Shipanzahl+1;
Shop = 0;
}
else if(Shop == 7 && Cookies >= Lab)
{
Cookies = Cookies - Lab;
Lab=Lab*2;
Labanzahl = Labanzahl+1;
Shop = 0;
}
else if (Shop == 0)
{
Cookies = Cookies+0;
}
else
{
cout << "Nicht genug Cookies\n\n\n\n\n";
}
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
if(Cin ==3)
{
cout <<"\n\n\n";
cout <<"Deine Cookies betragen: "<<Cookies<<endl<<endl;
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
if(Cin == 0)
{
weiter=2;
}
}while(weiter == 1);
return 0;
}
}
SO in der if(cin ==1) ist eine Erkennung der linken Maustaste IN der Konsole wenn man dort klickt gibt es einen Cookie +1,so wenn man dann aber mit dem Drücken des Mausrads aus der Schleife sich entfernt und in den Shop geht mit if(Cin==2) um dort etwas zu kaufen UND DANACH wieder auf die 1 geht um Cookies zu clicken kommt er nicht zurück in die Schleife. Ich bin mit meinem C++ am ende und meine Kollegen auf der Arbeit ebenfalls.
Ich hoffe mir kann jemand helfen, ich hänge meine Kompilierte Exe mal mit in einen Anhang.
Hey hey hey ganz ruhig ich habe nur etwas gefragt okay O.o ganz ruhig brauner ... und SO kompliziert ist das nicht. Und ach sag bloß als ob ich nich schon mehrere Debugger hab laufen lassen, es kommt kein Fehler oder sonstiges es geht so, aber ich weiß nicht warum das mit der Schleife nicht geht. Ich finde den Fehler nicht und ich habe mich jetz schon ganze 3 Stunden damit beschäftigt. Ich finde nichts DESWEGEN HOFFE ich ja auch auf Hilfe ....
€: Ausserdem habe ich ja kurz beschrieben worums geht da brauch man nicht ALLES zu lesen O.o und das sind ja nun wirklich nur Grundfunktionen ausser das mit der Maustaste
Hey hey hey ganz ruhig ich habe nur etwas gefragt okay O.o ganz ruhig brauner ... und SO kompliziert ist das nicht.
Nein, kompliziert ist es nicht. Aber einfach den kompletten Quelltext reinhauen und dann auf Hilfe hoffen ist nunmal nicht. Versuche wenigstens, den Code auf den Fehler zu reduzieren, dann wird man dir schon eher helfen können.
Abgesehen davon ist es nicht gerade leicht, deinen Code zu lesen - überragender Einrückung sei dank.
Dann mach dich mal darüber schlau, was ein (guter) Debugger alles drauf hat. Mir kommts echt so vor, als hätten 80% hier keine Ahnung vom Debuggen.
Schonmal was von (conditional) Breakpoints, "steppen" usw gehört?
Falls du Visual Studio benutzt geb ich dir mal n kleinen Gheimtipp: F9, F10 und F11.
VS kann ich hier nciht nutzen Dr.Kaiser, ich hasse das Prog.Als Entwicklungsumgebugn nutz ich Notepad++ mit GNU Compiler. Oder Codeblocks Portable. Nutze hier Borland mit dem Turbo Debugger. Und sonst OllyDbg ... wobei ich beides nicht gut kenne. Hab auch schon gegooglet. Und bin deswegen auf die Debugger gekommen.
Dr.Kaiser ist ein Programm für eien Reborn karte, der Rechner setzt sich zurück und lässt nichts in die Reg rein. Doch C::B hat einen aber der gibt mir keine Fehler aus.bzw. nichts was ich erkennen kann. Das Programm funktioniert ja. Aber nicht so wie ich es mir vorgestellt hatte. Man soll nicht nur beim ersten mal klciken können sondern auch wenn der Menüpunkt ein weiteres mal angeklcikt wird. Nur dort fleigt er wider zurück in das Menü OHNE das man eine Chance hat die Maustaste zu drücken.
Deine Code Formatierung bzw. deine Code Einrückung, wie Schlüsselbein schon erwähnte, ist wirklich abartig und man erkennt nicht wirklich viel.
Was ich vielleicht so ca. gemerkt habe beim durchfliegen des Codes ist, deine do-while funktioniert solange weiter = 1 ist, da du aber durch die if-Anweisungen der Variable "weiter" einen neuen Wert zuweist(2), dann bist du raus aus der Schleife weil die Bedienung weiter==1 nicht mehr gilt.
Falls ich was übersehen habe dann sry aber bei so einer Einrückung kann man schlecht was erkennen wie schon gesagt.
Ja hat mir Ende! grade auch schon gesagt in einer PN sry dafür, ich habe die Einrückung jetz neu gemacht ich hoffe man erkennt mehr. Mache grade einen Workshop und die andern müssen das vertsehen ^^ Der läuft seit 3 Tagen und habe alles untereinander programmiert.
So hab den Code überarbeitet
Ja, aber das ist die hauptschleife, die andere Schleife die man in Zeile 71 findet ist mein Problem. also beim if(Cin ==1) in Zeile 66.
Ich muss nachdem ich diese Schleife verlassen haben irgendwie wieder dort rein. Sonst geht das ganze so nicht auf.
Ich hätte ja gern Switch Case genommen nur dann funktioniert die Maustasten Erkennung nicht.
Doch C::B hat einen aber der gibt mir keine Fehler aus.bzw. nichts was ich erkennen kann.
Dann nochmal für dich, da du Teile meiner Posts wohl einfach überliest, oder? Wie benutzt du den Debugger? Schonmal Breakpoints gesetzt und wirklich den Code Anweisung für Anweisung durchgegangen? Damit wirst du den Fehler finden.
Ja habe ich, ich hatte voher eine andere Funktion anstatt den Mausklick, dort musste man 1 und dann Enter drücken, allerdings ohne Schleife. Werde das ganze einmal mit GDB Stück für Stück laufen lassen. Ich schaue nochmal genauer.
Gut, und was ist bei rausgekommen? Denn ich hab mir jetzt mal die Mühe gemacht, den Debugger anzuschmeissen und hab den Fehler prompt nach nichtmal 2 Minuten gefunden. Irgendwas machst du dann wohl doch falsch, oder?
Und deine Kollegen auf Arbeit scheinen ja auch echt Ahnung zu haben.
Mal n Schubser in die richtige Richtung: Schau dir die Variable Mouse an und wann diese verändert wird.
Noch n Tipp (damit hättest du vielleicht auch den Fehler vermeiden können): Variablen immer so lokal wie möglich definieren - also meistens direkt vor der Benutzung.
[PHP] Schleifen Problem 06/14/2013 - Web Development - 4 Replies Hey,
Ich bin grad dabei PHP zu lernen hab das früher schonmal gemacht ein oder zwei Jahre her aber da ich keine Zeit mehr hatte konnte ich es nicht wirklich 100%ig lernen
bin grad wieder bei den schleifen..
<?php
while ( $wert < 5 )
{
echo "Nr. $wert <br />";
While Schleifen Problem 01/20/2013 - Web Development - 5 Replies Hey E*Pvpers,
ich habe ein Problem mit einer While Schleife.
Ich lasse die Kontakt Anfragen von meiner Website in eine Datenbank eintragen und schließlich im Admin Panel ausgeben.
Es geht jetzt speziell um die Sortierung der Personen, die eine Anfrage geschickt haben. Ich möchte, dass falls eine Person mir zweimal schreibt, sie wieder in die selbe Sparte einsortiert wird.
Hier ein Bild (Mit dem Fehler)
http://i.epvpimg.com/lIVud.png
Wie ihr seht wird die Person allerdings zweimal...
2 While Schleifen - Problem 12/25/2012 - AutoIt - 7 Replies Abend epvp,
ich hab 2 GuiCreate Forms. $Form1 auf @SW_SHOW und $Form2 auf HIDE.
Damit $Form1 sich schließst und $Form2 sich öffnet wenn ich einen Button in $Form1 drücke, hab ichs so:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
while schleifen frage ...HILFE?!?!?!?! 03/31/2012 - AutoIt - 2 Replies Ich hab hier einen sehr simplen script, wo ich mir eig sicher bin das er richtig is.. doch es kommt immer eine fehlermeldung
hier der script
While 1
Sleep ( 5000 )
MouseClick("left", 120, 305, 1)
Sleep ( 5000 )
While Schleifen Problem 12/31/2010 - AutoIt - 24 Replies Hi Com.,
ich habe einen Fritzbox ip changer geschrieben.
Alles klappt wunderbar, nur macht mir die while schleife zu schaffen.
Hier mein Script.
#include <INet.au3>