Reversi KI

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3, 4  Weiter

Neue Antwort erstellen

 

neolein

BeitragMo, Feb 08, 2010 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
So, Wochenende vorbei, habe wieder etwas mehr Zeit.

Kurz zur letzten Antwort, ich habe nur gesehen, daß der rote Kreis bei den meisten Zügen von links nach rechts (und von oben nach unten) durchläuft, das SeedRnd habe ich aber noch nicht an den Anfang gestellt, mache ich bei Gelegenheit.

Die Lektion über Types habe ich so einigermaßen durch, nun wie ich es verstanden habe sollten wir die RND gewählten Felder unter Fields festlegen und die schon besuchten (erfolglosen) Felder sterben lassen?

Midimaster

BeitragMo, Feb 08, 2010 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem roten Kreis ist sicherlich ein Tippfehler. Ich hatte neulich auch sowas. Es lag dann an einer Variablen "MuasX" statt "MausX"

Type-Liste
ja, es wird beim wechsel des spielers eine liste aller möglichen felder erstellt. Alle die gar keinen Nachbarn haben und alle bei denen er nichts umdrehen kann, werden erst gat nicht aufgenommen.

Der Typ LeerTyp hat nur zwei Fields X% und Y%.

die erlaubten Steine werden mit Neu.LeerTyp= New LeerTyp in die Liste aufgenommen und mit
Neu\X...etc die Koordinaten vermerkt. Außerdem wird ein Zähler AnzahlLeere% um 1 hochgezählt.

Dann kann man mit For Such.LeerTyp = Each LeerTyp...Next alle durchscannen. Der Zufallsgenerator arbeitet nur zwischen 1 und AnzahlLeere und nimmt dann das zufall-te Elemente aus dieser Liste.


Ich habe übrigens die SpielerSetzt() und die ComputerSetzt() zu einer einzigen Function zusammengefasst. War ja eh fast das gleiche.... So ist es möglich Spieler gegen Spieler und Computer gegen Computer spielen zu lassen.

Auch die KI hab ich schon in eine eigene Routine verfrachtet. Bisher enthält sie nur unsere 2 Methoden: "Spieler setzt mit Maus" und "Spieler setzt per Zufall" .

In den Testspielen Computer-Computer hat sich jetzt schon rausgestellt, dass der, der "nicht beginnt" um 20% häufiger gewinnt!
 

neolein

BeitragMo, Feb 08, 2010 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum Letzteren, Zusammenfassen von Spieler und ComputerSetzen. Leider bleibt das Spiel hängen

Code: [AUSKLAPPEN]

Repeat
   
   Setzen()
   
   MaleSpielFeld()
   
Until KeyHit(1)

End



Function Setzen()
      
   If SpielerFertig = 2 And MouseHit (1)
      MausX=MouseX()/50
      MausY=MouseY()/50
      Ich%= 1
      
   ElseIf SpielerFertig = 1 And Feld(Ebene,MausX,MausY)=0
      MausX=Rand (1,8)
      MausY=Rand (1,8)
      Ich%= 2
      
   EndIf
   
      
      If  IstEsHierErlaubt%(MausX,MausY,Ich)
      
         Feld (Ebene,MausX,MausY)=Ich
         AllesDrehen (MausX,MausY,Ich)
         SpielerFertig=Ich%
         
      EndIf
      
   

End Function

Midimaster

BeitragMo, Feb 08, 2010 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Upps, die hättest du gar nicht schreiben müssen, weil ich sie ja schon fertig hatte...

Ich hätte zwei Vorschläge:

1. lass uns doch einen Worklog gründen für das Reversi-Spiel. Dass wird sich ja doch eine Zeit lang hinziehen und du kannst dort dann immer die neueste Gesamt-Version im ersten Beitrag bereitstellen.
Ich kann ihn dort zwar dann nicht ändern, aber ich finde unter der immer gleichen Adresse den aktuellen Zustand. Den zweiten Eintrag mach einfach ich und dort findest du dann immer meine Änderungen und meine neuen fertigen Functionen.

2. Lass uns diese Worklog, bzw den Thread hier nicht mehr "Dim (60,8,8)" sondern "Reversi-KI" nennen. Der Titel past inzwischen gar nicht mehr, oder?

die neue SpielerSetzt():
BlitzBasic: [AUSKLAPPEN]
Function SpielerSetzt()
ZugFestlegen Methode(SpielerNext)
MausX=ZufallX
MausY=ZufallY
If IstEsHierErlaubt(MausX,MausY,SpielerNext)
Feld(Ebene,MausX,MausY)=SpielerNext
DebugLog "Spieler " + SpielerNext + " setzt auf " + mausX + "/" + MausY

AllesDrehen(MausX,MausY,SpielerNext)
SpielerNext=3-SpielerNext
DebugLog "bald ist Spieler " + SpielerNext + " dran"

; dieser Teil stellt später fest, ob der gegner im anschluss überhaupt ziehen kann
; FindeAlleLeeren
; If AnzahlLeere=0
; DebugLog "(SpielerSetzt) Gegner " + SpielerNext + " kann nicht"
; SpielerNext=3-SpielerNext
; FindeAlleLeeren
; If AnzahlLeere=0
; DebugLog "(SpielerSetzt) Auch Gegner " + SpielerNext + " kann nicht"
; SpielEnde=1
; EndIf
; ;WaitKey
; EndIf

EndIf
End Function


sie benutzt schon die neue "KI-Funktion":
BlitzBasic: [AUSKLAPPEN]
Function ZugFestlegen(Methode%)
Select Methode
Case 0
; ziehen durch MausKlick
If MouseHit(1) Then
ZufallX=MouseX()/50
ZufallY=MouseY()/50
Else
ZufallX=0
EndIf
Case 1
; ziehen duch Zufall
ZufallX=Rand(1,8)
ZufallY=Rand(1,8)
End Select
End Function

Jeder Spieler bekommt ganz am anfang des Programms eine Methode zugeschrieben.
BlitzBasic: [AUSKLAPPEN]
Dim Methode%(2)
Methode(1)=2
Methode(2)=1


Und diese Methode führt dann in der ZugFestlegen() zur Verwendung des dazugehörenden KI-Algo.


und sie entält auch schon (auskommentiert) die neue FindeAlleLeeren(), die alle erlaubten Felder in die Liste aufnimmt und daher weiß, ob überhaupt mind. 1 mögliches Feld für den Gegner existiert. Diese Funktion wirst du ja noch schreiben.
 

neolein

BeitragDi, Feb 09, 2010 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, das mit dem Worklog ist gut, bevor es jedoch weitergeht muß ich mein Spiel wieder zum Laufen bringen, das scheint im Moment irgendwo zu hängen. die Hauptschleife lautet nun:

Repeat
SpielerSetzt
MaleSpielFeld()
Until KeyHit(1)
End


Code: [AUSKLAPPEN]

Graphics 640, 480, 16, 2
Dim Feld% (64,9,9)

Dim Methode%(2)
Methode(1)=2
Methode(2)=1

Global SpielerFertig%, MausX%, MausY%

Global Schwarz
Schwarz = CreateImage (36,36)
SetBuffer ImageBuffer (Schwarz)
Color 5,5,5
Oval 5,5,30,30

Global Weiss
Weiss = CreateImage (36,36)
SetBuffer ImageBuffer (Weiss)
Color 223,223,223
Oval 5,5,30,30

Global Rot
Rot = CreateImage (36,36)
SetBuffer ImageBuffer (Rot)
Color 223,3,3
Oval 5,5,30,30,0
Global RotX%,RotY%


SetBuffer BackBuffer()

FeldReset()

SpielerFertig=2

SeedRnd MilliSecs()


Repeat
   SpielerSetzt
   MaleSpielFeld()
   Until KeyHit(1)
End



Function SpielerSetzt()

   ZugFestlegen Methode(SpielerNext)
   MausX=ZufallX
   MausY=ZufallY
   
   If IstEsHierErlaubt(MausX,MausY,SpielerNext)
      Feld(Ebene,MausX,MausY)=SpielerNext
      DebugLog "Spieler " + SpielerNext + " setzt auf " + mausX + "/" + MausY
      AllesDrehen(MausX,MausY,SpielerNext)
      SpielerNext=3-SpielerNext
      DebugLog "bald ist Spieler " + SpielerNext + " dran"
      
   EndIf
   
End Function



Function ZugFestlegen(Methode%)
   Select Methode
      Case 0
      ; ziehen durch MausKlick
         If MouseHit(1) Then
            ZufallX=MouseX()/50
            ZufallY=MouseY()/50
         Else
            ZufallX=0
         EndIf
      Case 1
      ; ziehen duch Zufall
         ZufallX=Rand(1,8)
         ZufallY=Rand(1,8)
         
   End Select
         
End Function



Function  IstEsHierErlaubt%(X%,Y%,Ich%)
   Local  Ergebnis%, Summe%, i%, j%
      If  Feld(Ebene,X,Y)=0 Then
         For  i=-1 To  1
            For  j=-1 To  1
               Ergebnis = ScanneEineRichtung(X, Y, i, j, Ich)
               Summe =Summe + Ergebnis
            Next
         Next
      EndIf
   Return summe
End Function



Function ScanneEineRichtung%(X%, Y%, RichtungX%, RichtungY%, Ich%)
   Local Erfolg%
      Repeat
      
         X=X+RichtungX
         Y=Y+RichtungY
         
         If (X>8) Or (X<1) Or (Y>8) Or (Y<1) Then
         
            Return  0
            
         EndIf
         
         If Feld(Ebene,X,Y)=0 Then
            ; leeres Feld gefunden
            Return  0
            ElseIf Feld(Ebene,X,Y)<>Ich Then
            ; Gegner-Feld gefunden
            Erfolg=Erfolg+1
            ElseIf Feld(Ebene,X,Y)=Ich Then
            ; eigenes Feld gefunden
         Return Erfolg
         EndIf
      Forever
End Function



Function DreheEineRichtung (X%, Y%, RichtungX%, RichtungY%, Ich%)
      Repeat
         
         X=X+RichtungX
         Y=Y+RichtungY
         
            If Feld (Ebene,X,Y)=Ich Then
               Return
            EndIf
      Feld(Ebene,X,Y)=Ich
      Forever
End Function



Function AllesDrehen(X%,Y%,Ich%)
  Local Ergebnis%, Summe%, i%, j%
     For i=-1 To 1
        For j=-1 To 1
          If ScanneEineRichtung(X, Y, i, j, Ich)>0 Then
               DreheEineRichtung (X%, Y%, i, j, Ich%)
         EndIf
        Next
     Next
 End Function



Function MaleSpielFeld()
   Local X%, Y%
      Cls
         Color 50, 100, 50 ;grün
         Rect 0,0,640,480,1 ;grüner Hintergrund
         Color 255, 255, 255
      For x = 1 To  8
         For y = 1 To 8
            Rect x*50, Y*50, 50, 50, 0
            If feld (Ebene,X,Y) = 1 Then
               DrawImage Schwarz, X*50+2,Y*50+2
               ElseIf feld (Ebene,X,Y) = 2 Then
               DrawImage Weiss, X*50+2, Y*50+2
            EndIf
         Next
      Next
   DrawImage Rot, MausX*50+2, MausY*50+2   
Flip 1
End Function


Function FeldReset()
   Local E%, X%, Y%
      For E = 1 To  60
         For X = 1 To  8
            For Y = 1 To  8
               Feld (E,X,Y)= 0
            Next
         Next
      Next
; 4 Start-Steine
Feld(0,4,5)=1
Feld(0,5,4)=1
Feld(0,4,4)=2
Feld(0,5,5)=2
End Function



Midimaster

BeitragDi, Feb 09, 2010 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
zu "läuft nicht..."

du hast mit der Übernahme meiner Funktionen einige neue Variablen verwendet. Aber du hast sie aber ganz oben im Code nicht GLOBAL definiert.

Ich sende dir hier mal meinen "Global-Block", der auch schon ein paar zulünftige Veriablen enthält:
BlitzBasic: [AUSKLAPPEN]
Global GibtWasZuMalen%,	SpielerFertig%, AnzahlLeere%, ZufallX%, ZufallY%, RotX%, RotY%
Global MausX%, MausY%, SpielerKonnteNicht%, Immer%, Zeit%, SpielEnde%, WieOft%
Global AnzahlSchwarze%, AnzahlWeisse%, SchwarzGewinnt%, WeissGewinnt%
Global SchwarzBeginntGewinnt%, WeissBeginntGewinnt%, WerBeginnt%


In den Zusammenhang fällt mir auf, dass wir die Variable, die den aktuellen Spieler beschreibt, immer noch SpielerFertig% nennen. Lass sie uns überall in Spieler% umbenennen. Das trifft es besser!

Außerdem musst du jetzt bei der Strategie-Auswahl vor Spielstart festlegen, welcher Spieler welche Methode verfolgt. Es gibt momentan nur 0 und 1:
BlitzBasic: [AUSKLAPPEN]
Dim Methode%(2)
Methode(1)=0
Methode(2)=1

Ich hatte dir hier Methode(1)=2 geschrieben, weil ich schon an einer ersten KI bastle...

Wenn Du gegen jemanden spielen willst dann nimm:
BlitzBasic: [AUSKLAPPEN]
Dim Methode%(2)
Methode(1)=0
Methode(2)=0


Um den roten Kreis richtig zu sehen, ist diese Änderung nötig:
BlitzBasic: [AUSKLAPPEN]
Function ZugFestlegen(Methode%)
Select Methode
Case 0
; ziehen durch MausKlick
RotX=MouseX()/50
RotY=MouseY()/50
If MouseHit(1) Then
ZufallX=RotX
ZufallY=RotY
Else
ZufallX=0
EndIf
Case 1
RotX=Rand(1,8)
RotY=Rand(1,8)
ZufallX=RotX
ZufallY=RotY
End Select
End Function

und in der MaleSpielFeld()
BlitzBasic: [AUSKLAPPEN]
...
Next
Next
DrawImage Rot, rotX*50+2, rotY*50+2
Flip 0
Delay 50
End Function

Das Flip 0 mit dem Delay 50 dient dazu, den Prozessor nicht so zu stressen!
 

neolein

BeitragDi, Feb 09, 2010 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Der rote Kreis läuft mit, aber es dreht sich Nix um, auch wenn ich die Werte unter Methode ändere:

Code: [AUSKLAPPEN]

Graphics 640, 480, 16, 2
Dim Feld% (64,9,9)

Dim Methode%(2)
Methode(1)=0
Methode(2)=1

Global GibtWasZuMalen%,   Spieler%, AnzahlLeere%, ZufallX%, ZufallY%, RotX%, RotY%
Global MausX%, MausY%, SpielerKonnteNicht%, Immer%, Zeit%, SpielEnde%, WieOft%
Global AnzahlSchwarze%, AnzahlWeisse%, SchwarzGewinnt%, WeissGewinnt%
Global SchwarzBeginntGewinnt%, WeissBeginntGewinnt%, WerBeginnt%

Global Schwarz
Schwarz = CreateImage (36,36)
SetBuffer ImageBuffer (Schwarz)
Color 5,5,5
Oval 5,5,30,30

Global Weiss
Weiss = CreateImage (36,36)
SetBuffer ImageBuffer (Weiss)
Color 223,223,223
Oval 5,5,30,30

Global Rot
Rot = CreateImage (36,36)
SetBuffer ImageBuffer (Rot)
Color 223,3,3
Oval 5,5,30,30,0


SetBuffer BackBuffer()

FeldReset()

;Spieler=2

SeedRnd MilliSecs()

Repeat
   
   SpielerSetzt()
   
   MaleSpielFeld()
   
Until KeyHit(1)

End



Function SpielerSetzt()

   ZugFestlegen Methode(SpielerNext)
   
   MausX=ZufallX
   MausY=ZufallY
   
   If IstEsHierErlaubt(MausX,MausY,SpielerNext)
   
      Feld(Ebene,MausX,MausY)=SpielerNext
      DebugLog "Spieler " + SpielerNext + " setzt auf " + MausX + "/" + MausY
      AllesDrehen(MausX,MausY,SpielerNext)
      SpielerNext=3-SpielerNext
      DebugLog "bald ist Spieler " + SpielerNext + " dran"
      
   EndIf
   
End Function



Function ZugFestlegen(Methode%)
   Select Methode
      Case 0
      ; ziehen durch MausKlick
         RotX=MouseX()/50
         RotY=MouseY()/50
         
         If MouseHit(1) Then
         
            ZufallX=RotX
            ZufallY=RotY
            
         Else
         
            ZufallX=0
            
         EndIf
         
      Case 1
                    RotX=Rand(1,8)
                    RotY=Rand(1,8)
         ZufallX=RotX
         ZufallY=RotY
         
   End Select
End Function



Function  IstEsHierErlaubt%(X%,Y%,Ich%)
   Local  Ergebnis%, Summe%, i%, j%
      If  Feld(Ebene,X,Y)=0 Then
         For  i=-1 To  1
            For  j=-1 To  1
               Ergebnis = ScanneEineRichtung(X, Y, i, j, Ich)
               Summe =Summe + Ergebnis
            Next
         Next
      EndIf
   Return summe
End Function



Function ScanneEineRichtung%(X%, Y%, RichtungX%, RichtungY%, Ich%)
   Local Erfolg%
      Repeat
      
         X=X+RichtungX
         Y=Y+RichtungY
         
         If (X>8) Or (X<1) Or (Y>8) Or (Y<1) Then
         
            Return  0
            
         EndIf
         
         If Feld(Ebene,X,Y)=0 Then
            ; leeres Feld gefunden
            Return  0
            ElseIf Feld(Ebene,X,Y)<>Ich Then
            ; Gegner-Feld gefunden
            Erfolg=Erfolg+1
            ElseIf Feld(Ebene,X,Y)=Ich Then
            ; eigenes Feld gefunden
         Return Erfolg
         EndIf
      Forever
End Function



Function DreheEineRichtung (X%, Y%, RichtungX%, RichtungY%, Ich%)
      Repeat
         
         X=X+RichtungX
         Y=Y+RichtungY
         
            If Feld (Ebene,X,Y)=Ich Then
               Return
            EndIf
      Feld(Ebene,X,Y)=Ich
      Forever
End Function



Function AllesDrehen(X%,Y%,Ich%)
  Local Ergebnis%, Summe%, i%, j%
     For i=-1 To 1
        For j=-1 To 1
          If ScanneEineRichtung(X, Y, i, j, Ich)>0 Then
               DreheEineRichtung (X%, Y%, i, j, Ich%)
         EndIf
        Next
     Next
 End Function



Function MaleSpielFeld()
   Local X%, Y%
      Cls
         Color 50, 100, 50 ;grün
         Rect 0,0,640,480,1 ;grüner Hintergrund
         Color 255, 255, 255
      For x = 1 To  8
         For y = 1 To 8
            Rect x*50, Y*50, 50, 50, 0
            If Feld (Ebene,X,Y) = 1 Then
               DrawImage Schwarz, X*50+2,Y*50+2
               ElseIf Feld (Ebene,X,Y) = 2 Then
               DrawImage Weiss, X*50+2, Y*50+2
            EndIf
         Next
      Next
   DrawImage Rot, rotX*50+2, rotY*50+2   
Flip 0
Delay 50
End Function


Function FeldReset()
   Local E%, X%, Y%
      For E = 1 To  60
         For X = 1 To  8
            For Y = 1 To  8
               Feld (E,X,Y)= 0
            Next
         Next
      Next
; 4 Start-Steine
Feld(0,4,5)=1
Feld(0,5,4)=1
Feld(0,4,4)=2
Feld(0,5,5)=2
End Function



Midimaster

BeitragDi, Feb 09, 2010 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte nicht immer den gesamten quelltext neu reinstellen! wir bekommen sinst ärger mit den moderatoren!

Mach einen Worklog auf. das ist das gleiche wie normaler post, aber unter der rubrik worklog. Dort kopiertst du dann (auch wenn wir schon dutzende beiträge geschrieben haben werden), den aktuellen code immer in den ältesten post!

Fehler I: Spieler auskommentiert

das ist sicher falsch:
Zitat:
...
SetBuffer BackBuffer()
FeldReset()
;Spieler=2
SeedRnd MilliSecs()
Repeat
...


Einer der beiden Spieler muss anfangen. Also
BlitzBasic: [AUSKLAPPEN]
Spieler=2

oder
BlitzBasic: [AUSKLAPPEN]
Spieler=1

aber auf keinen Fall wegkommentieren!

Fehler II: SpielerNext
Du hast nicht alle SpielerNext umgewandelt! 8 Stück vergessen! Am besten machst du das mit dem Menü "Edit...Replace...Alle ersetzen..."
  • Zuletzt bearbeitet von Midimaster am Di, Feb 09, 2010 14:14, insgesamt 2-mal bearbeitet

BladeRunner

Moderator

BeitragDi, Feb 09, 2010 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Solange er Codeboxen nimmt soll es mir recht sein. Soviel traffic macht das nun nicht Smile
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

neolein

BeitragDi, Feb 09, 2010 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, Worklog wurde erstellt, 2 Mitglieder, ich habe jetzt den Code geändert und er läuft, aus Versehen habe ich 2 Worklogs erstellt, den ersten würde ich gerne löschen "Reversi-KI", und den 2. behalten aber umbenennen (Rversi-KI).

D2006

Administrator

BeitragDi, Feb 09, 2010 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Einspruch!

Wir werden ganz bestimmt nicht die Portalsfunktion zur Veröffentlichung von Entwicklertagebüchern für derlei Codesupport missbrauchen. Ich hab ehrlich gesagt nicht den Überblick über diesen Thread hier, aber ich bezweifle, das solche Maßnahmen nötig sind, wo es Jahre lang vorher auch nur mit dem Forum ging.

~Worklog gelöscht~
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

neolein

BeitragDi, Feb 09, 2010 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, kann ich ja nicht bestimmen, aber sollte der Woklog nicht gerade dazu dienen, die Flut von Postings einzugrenzen?
Dem wäre damit gedient, wenn Midimaster und ich an einem Code herumbasteln können, ohne ihn ständig neu zu veröffentlichen.

Oder geht die Vergabe von Editierungsrechten an Dritte auch im Forum?

D2006

Administrator

BeitragDi, Feb 09, 2010 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, dazu ist der Worklog nicht da. Im Gegenteil: Als Worklog würdet ihr damit eine ganze Menge Leute belästigen, die mit dem Problem nichts anfangen können. Hier in diesem Thread seid ihr zwei unter euch, da könnt ihr noch viele Seiten schreiben.

Wenn ihr effektivere Methoden zum Austausch benötigt, so könnt ihr das ja selbst organisieren. Sei es per E-Mail, in nem privaten Forum oder sonstwie. Da ihr zwei die einzigen seid, die sich hier austauschen, hat das Thema eh den für ein Forum typischen öffentlichen Charakter verloren. Nicht falsch verstehen: Ihr könnt den Thread gerne weiter so nutzen, aber bitte nicht andere Portalsfunktionen missbrauchen.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
  • Zuletzt bearbeitet von D2006 am Di, Feb 09, 2010 15:23, insgesamt einmal bearbeitet

Midimaster

BeitragDi, Feb 09, 2010 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
@d2006
oh, sorry, hab ich da was falsch verstanden? Ich dachte echt, der Worklog wäre genau für sowas...

Wir entwickeln zusammen eine KI für Reversi und wollten uns auf diesem Weg unsere täglichen Fortschritte mitteilen, ohne eben das Forum zu belästigen.

Wann genau darf man denn dan einen Worklog gründen?

D2006

Administrator

BeitragDi, Feb 09, 2010 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
In einem Worklog präsentiert ein Entwicklerteam die Fortschritte eines Projekts einer interessierten Öffentlichkeit, nicht anderen Teammitgliedern. Ihr wollt ja mehr oder minder ne gute Möglichkeit haben, gemeinsam an einer Codebasis zu arbeiten. Ich empfehle dafür SVN.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Midimaster

BeitragDi, Feb 09, 2010 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ok! Da scheine ich wohl eine ganz falsche Vorstellung von diesem Portal-Bereich zu haben. Ich muss zugeben, ich weiß so gut wie gar nicht, was der Unterschied zwischen Forum und Worklog ist.

@D2006
Zitat:
...Als Worklog würdet ihr damit eine ganze Menge Leute belästigen, die mit dem Problem nichts anfangen können...

versteh' ich nicht? Wie soll das belästigen? Werden die Beiträge dort irgendwie automatisch versendet?

Ab wieviel Lesern besteht denn ein "öffentliches Interesse"?



@neolein
dann bleiben wir bei dem alten Thread. Ganz privat per Email ist mir zu umständlich und auch zu persönlich. außerdem sagen mir die 1000 Aufrufe, dass das Ganze nicht ganz ohne öffentliches Interesse zu sein scheint. Vielleicht können wir uns ja darauf einigen, dass du dort den Thread-Titel mal änderst und den Gesamtcode immer im ersten Beitrag vom 29.Jan durch EDIT einfügst?

D2006

Administrator

BeitragDi, Feb 09, 2010 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie ich bereits erwähnt habe, werden in den Worklogs Projekte beschreibend vorgestellt. Eine Codebox ist keine beschreibende Vorstellung. Insgesamt ist das, was ihr vorhabt, nicht dass, was hier landläufig unter einem Worklog verstanden wird. Und "Belästigung" wäre es, da Leute in den Worklogs eben genau eine solche Vorstellung erwarten, die ihr nicht erfüllen würdet. Es besteht somit auch kein öffentliches Interesse an einen Worklog, der keiner ist.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

neolein

BeitragDi, Feb 09, 2010 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, also ich werde dann den Code im ersten Posting eben immer ändern, er ist jetzt auf dem letzten Stand, die Funktion FindeAlleLeeren() ist noch nicht implementiert, bin mir aber fast sicher, daß die Variable "Erfolg" eingebaut werden muss.

Titel wurde auch geändert.

Also das mit dem öffentlichen Interesse halte ich auch für.... Rolling Eyes

Das fehlende Interesse hat eindeutig einzig und allein Moderator D2006, und die Entscheidung beruht auf seiner sehr subjektiven Argumentationsweise, ich kann mir auch sonst nicht erklären, warum wir mehr als 1000 Aufrufe haben, warum manch Autor in den Worklogs auch nur Monologe in seinen Postings führt... aber gut ist.

Zurück zum Code, ich würde gerne noch beim Layout des Spielfeldes die 8 Spalten mit Buchstaben beziffern (a-h oben) und alle Reihen mit Zahlen (1-8 links).

Das wäre erstens später bei der Beschreibung einzelner Züge wichtig und 2. ist regulär jedes Othello Spielfeld mit dieser Beschriftung versehen.

Wenn es stört können wir es später auch noch einbinden.

BladeRunner

Moderator

BeitragDi, Feb 09, 2010 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Die tausend Aufrufe habt ihr sicher auch deswegen weil man alle neue Posts bei BBP-Live angezeigt bekommt und viele User einfach alles anklicken was neu kommt. Dann habe ich bislang noch jeden neuen Post extra gesehen, allein weil ich als Moderator gucken muss ob ein Thread irgendwo aus dem Ruder läuft.
Also werden allein schon durch 57 Posts * 5-9 aktive Moderatoren hunderte von Aufrufen erzeugt.
Soviel dazu.
Ein Worklog dient der Beschreibung der Entstehung eines Projektes (deswegen auch die Monologe der Entwickler, neolein).
Es ist keine Plattform zur Problemlösung, wofür ihr es ja benutzen wollt.
Dafür gibt es das Forum, beziehungsweise wenn man eine 'Partnerschaft' eingegangen ist die Wege Privatnachricht, ICQ, Email ...
Daher teile ich D2006 Sichtweise vollkommen und kann deinen Unmut auch nicht wirklich verstehen- niemand hindert dich und Midimaster am Austausch, nur gestatten wir halt nicht das Hijacking eines Worklogs für diesen Zweck.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Holzchopf

Meisterpacker

BeitragDi, Feb 09, 2010 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Die 1000 Aufrufe müssen nicht zwingend bedeuten, dass an dem Thread auch hohes Interesse besteht. 1000 Aufrufe heisst nicht, dass hier schon tausend User reingeguckt hätten, sondern, dass der Thread seit der Erstellung tausendmal aufgerufen wurde - durchaus kein Kunststück bei einem dreiseitigen Thread Rolling Eyes

Der Sinn von Worklogs ist, wie Dee schon sagte, der Öffentlichkeit mitzuteilen, wie es mit der Arbeit vorangeht. Was ihr hier aber tut ist ja einfach zu zweit einen Code erarbeiten. Es gibt nirgends eine Regel, die verbietet, dass in einem Thread nur zwei Leute aktiv mitmachen dürften. Ausserdem besteht ja auch die Möglichkeit, dass plötzlich einer dazwischen funken will (im Sinne von guter Einwand oder Vorschlag), dafür ist eigentlich ein Forum gemacht.

Falls ihr mal einen Abend zusammensitzen wollt um den Code gemeinsam zur Perfektion zu bringen, könnte unter Umständen auch das Codepasting hilfreich sein für euch. Bedenkt aber, dass Codes nicht ewig dort bleiben und nach einer Weile automatisch gelöscht werden.

Edit
Ach, da war mal wieder einer schneller als ich =/
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Gehe zu Seite Zurück  1, 2, 3, 4  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group