Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Grafik im Hintergrund zum Vorschein bringen?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Kugelfisch



Anmeldungsdatum: 19.07.2005
Beiträge: 7

BeitragVerfasst am: 19.07.2005, 01:17    Titel: Grafik im Hintergrund zum Vorschein bringen? Antworten mit Zitat

Hallo!

zuerst einmal muss ich gestehen, dass ich zwar schon sehr lange, aber immer nur auf einem relativ niedrigen Niveau und sehr unregelmäßig in QBasic programmiere, daher erscheint die folgende Frage dem Crack auch vielleicht als recht banal, ich weiss es nicht.

Heute hatte ich die Idee, eine einfach Zufallsbemalung des Bildschirms, die ich mir einmal als eine Art Bildschirmschoner gedacht hatte, zum Spiel umzubauen.

Also schnell einen Rahmen gezogen, der - Punkt für Punkt - mit zufälligen Farben vollgemalt wird. Das Spiel besteht nun darin, dass eine Form - ich hab bereits "Haus", "Kreis", "Kette"... entwickelt - nach und nach im Hintergrund erscheinen soll. Also wenn der Punkt sich zufällig auf einem Teil der versteckten Grafik befindet, soll eben nicht eine zufällige Farbe verwendet werden, sondern er soll weiss werden. Derjenige der beiden Spieler, der zuerst errät, welche Form sich hinter der Zufallsbemalung versteckt, gewinnt die Runde. Zuerst wollte ich einfach Grenzen einbauen, wo die Zufallsbemalung nicht hinkommt, aber das wird - insbesondere bei Kreisen - aber doch schwer.

Wie kann ich das, ohne umständlich einzelne Punkte zu definieren, lösen? Die versteckten Formen sollen nur, wenn der Cursor gerade auf einem Punkt der Hintergrundgrafik ist, erscheinen, also nur nach und nach.

Vielen Dank für jegliche Antworten! grinsen und viele Grüße

Johannes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 19.07.2005, 09:23    Titel: Antworten mit Zitat

also du musst schon jeden Punkt definieren, wo eine spezielle Farbe auftauchen soll. Ob du es umständlich machst ist eine andere Sache.

Ich würde es einfach mal so angehen, dass du dein Bild mit "unsichtbarer" Farbe malst, sprich z.B. bei SCREEN 13 mit der Farbe 16, die ist auch schwarz und somit nicht von Farbe 0 zu unterscheiden, nun musst du bei jeden Farbsetzen einfach mit POINT(x,y) abfragen, ob die Hintergrundfarbe 16 oder 0 ist.

Wenn du einen anderen Screen nimmst, kannst du dir auch mit PALETTE mehrere gleichaussehende Farben machen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kugelfisch



Anmeldungsdatum: 19.07.2005
Beiträge: 7

BeitragVerfasst am: 19.07.2005, 12:25    Titel: Antworten mit Zitat

das klingt doch nach einer Super-Lösung lächeln

Vielen Dank!! happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kugelfisch



Anmeldungsdatum: 19.07.2005
Beiträge: 7

BeitragVerfasst am: 19.07.2005, 14:59    Titel: Noch erfolglos, wer weiss Hilfe? Antworten mit Zitat

Hallo nochmal!

Es funktioniert nicht...
der Code müsste doch in etwa so aussehen, oder?:

PALETTE 15,0 (Farbe 16 gibts nicht??)

.....

o% = POINT(x, y)
IF o% = 15 THEN
PSET (x, y), 7
GOTO A
END IF

Also, es soll grau werden!

Zwar kann ich in der Gegend der Grafik etwas mehr grau feststellen, aber beileibe nicht alles wird grau...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kugelfisch



Anmeldungsdatum: 19.07.2005
Beiträge: 7

BeitragVerfasst am: 19.07.2005, 15:03    Titel: Antworten mit Zitat

ach und wenn ich einfach eine fläche bunt anmale und dann die farbe abfrage funktioniert es schon, nur im großen programm nicht!

Danke für eure Antworten,
Johannes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 19.07.2005, 18:07    Titel: Antworten mit Zitat

Kugelfisch hat Folgendes geschrieben:
ach und wenn ich einfach eine fläche bunt anmale und dann die farbe abfrage funktioniert es schon, nur im großen programm nicht!


1. Es gibt einen Editierbutton
2. Ich weiß absolut nicht, was du meinst

Auch bei deinem Posting davor kann ich nicht recht nachvollziehen, was du meinst. Ich gehe mal davon aus, du hast etwa sowas:
Code:
screen 12
palette 15,0
circle (50,50), 40, 15
for i = 0 to 100
    for j = 0 to 100
        if point(i,j) = 15 then pset (i,j), 7 else pset(i,j), rnd*15
        for pause = 1 to 10000:next
    next
next
sleep

So klappt es auf jeden Fall schonmal, natürlich sieht man den Kreis sehr schlecht, wenn man ihn besser sehen soll, kannst du ihn entweder dicker zeichnen oder du fragst schon die Nachbarfelder ab.

Also, wenn du noch ein Problem hast, dann sei mal etwas konkreter, bzw. gib auch mal den Code an, wo Probleme auftreten.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kugelfisch



Anmeldungsdatum: 19.07.2005
Beiträge: 7

BeitragVerfasst am: 20.07.2005, 15:10    Titel: Antworten mit Zitat

du hast mit einer Pause gearbeitet, das habe ich nicht gemacht.

kann es vielleicht daran liegen, dass er ohne unterbechung malt?

ich habe es wirklich nicht so professionell wie du geschrieben, aber dennoch funktioniert es wenn ich den bildschirm komplett einfärbe schon, oder einfach ein rechteck zeichne.

nur bei meinen figuren nicht, egal ob ich sie verstecke oder nicht. mit dem Kopf durch die Mauer wollen

Ich habe meinen Code einmal hochgeladen, er ist unter
http://www.herzovision.de/fritz-wolfgang/RATE.BAS zu finden. danke für die Hilfe! zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 20.07.2005, 16:00    Titel: Antworten mit Zitat

kleine Empfehlung: http://fb.exp-soft.de/fbnp happy Dann lässt sich der Code besser lesen.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 20.07.2005, 16:28    Titel: Antworten mit Zitat

..zumindest ab Version 2 die der MisterD ja so schnell wie möglich rausbringt happy
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 20.07.2005, 17:05    Titel: Antworten mit Zitat

es ist ganz klar, warum dein Programm nicht funktioniert, du fragst zwar nach Farbe 7 ab, aber nicht nach Farbe 15, mit der du es dann abdeckst, ergo wird immer sofort das Bild übermalt.
Du musst bei der Abfrage nur
Code:
IF POINT(x, y) = 7 OR POINT(x, y) = 15 THEN PSET (x, y), 15 ELSE PSET (x, y), w

schreiben.

Aber deine Codestruktur ist auch nicht sehr berauschend (Stichwort GOTO) und mit dieser Zufallsverteilung kann es manchmal echt Jahre dauern, bis man genug vom Bild sieht.
Was mich aber am meisten wundert, so schlimm ist der Code eigentlich nicht (hab schon bedeutend schlimmeres gesehen), aber irgendwie bringt der Code mein QB durcheinander, nachdem ich das Programm einmal ausgeführt hat, kommen beim Druck von einer Pfeiltaste lauter Zahlen, anstatt ich den Cursor verschieben kann und seltsamerweise reagiert im dei Zufallsverteilung auf meine Tastendrücke, obwohl dafür gar nix programmiert ist. Kann ich echt nicht nachvollziehen, zumal ja nirgendwo im Speicher rumgefummelt wird.
Und zu guterletzt habe ich auch mal das Programm mit FB laufen lassen, da macht das Programm auch was völlig anderes, obwohl ja nur elementare Befehle verwendet werden. verwundert *völligverwirrtsei*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kugelfisch



Anmeldungsdatum: 19.07.2005
Beiträge: 7

BeitragVerfasst am: 21.07.2005, 02:06    Titel: Antworten mit Zitat

tatsächlich... jetzt funktioniert es! war auch logisch das mit dem 7 UND 15! Also vielen Dank für die Hilfe nochmal... grinsen

wie mach ich das denn schneller mit den GOTOs, und was könnte ich ausserdem verbessern?

Viele Grüße & Gut Nacht!

Johannes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kugelfisch



Anmeldungsdatum: 19.07.2005
Beiträge: 7

BeitragVerfasst am: 21.07.2005, 02:07    Titel: Antworten mit Zitat

insbesondere: was meinst du mit "mit dieser Zufallsverteilung kann es manchmal echt Jahre dauern, bis man genug vom Bild sieht" - wie sähe eine bessere verteilung aus?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 21.07.2005, 10:01    Titel: Antworten mit Zitat

Eine bessere Verteilung wären Zufallszahlen, wo keine gleichen x- und y-Paare vorkommen.

Dazu gibt's auf www.qbasic.de ein Beispielprogramm.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Tomtitom



Anmeldungsdatum: 20.09.2004
Beiträge: 308

BeitragVerfasst am: 21.07.2005, 10:12    Titel: Antworten mit Zitat

Und nochmal, es gibt da rechts oben so einen tollen Edit-Button, ich bitte dich ihn auch mal zu benutzen, anstatt andaurend doppel-Posts zu machen!

Ich habe mal deinen Code etwas bearbeitet: http://fb.exp-soft.de/fbnp/index.php?view=35
Gotos sind weg und ich habe die Zufallsverteilung geändert, die ist zwar auch nicht viel besser, aber nicht so komisch kompliziert, wie du sie gemacht hast. Im Prinzip besteht eben immre die Gefahr das der Punkt irgendwo in die Ecke wandert und dann nicht mehr zurückkommt, so dass man erst nach ein paar Minuten sieht, was für ein Bild gemalt werden sollte. Umgehen kannst du das nur wie bei meiner Variante 2 aber weil das ja doch ganz schön anders ist könntest du auch die Ursprüngliche Verteilung mit Hilfe von Wahrscheinlichkeitsrechnung so modifizieren, das nach einer gewissen Zeit alle Felder mal abgedeckt wurden, was allerdings nicht so leicht wäre.
Es ist ja sowieso dein Programm und wenn es dir so schon gefällt, dann lass es halt so.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz