Προς το περιεχόμενο

Help beta-test tavli3d


biocrasher

Προτεινόμενες αναρτήσεις

Δημοσ.

Loipon molis katevasa kai dokimasa tin 0.3.3 kai apogoiteftika apo ta grafika.

To evala se ena AMD 2200xp 256 ram kai 64ara share karta grafikon.

 

1.Epilego aspra poulia kai vlepo ola aspra kai tou andipalou.

 

2.Epilego mavra poulia kai ta vlepo ola aspra kai pali kai tou andipalou.

Kai fisika patao Back etsi kai oxi Esc meta tin epilogi.

 

3 Giati paramenei to parathiro tou Dos kai den fevgei meta tin ekinisi tou programatos?

 

Afta pros to paron giati den mporesa na dokimaso pexnidi kai na do an yparxoune provlimata giati ta vlepo ola aspra.

 

P.S Den xero mpori kai na fteei kai i karta grafikon mou min se paro sto lemo mou etsi?

  • Απαντ. 53
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Εγω εχω ενα προβλημα.Δεν μου δειχνει καθολου γραμματα.Μηπως δεν εχω καποια γραμματοσειρα.Στο μενου σου δειχνει απλως labels κενες.Κριμα κ φαινεται ωραιο ρε γμτ.Μαλλον δεν μου δειχνει κ τις ζαριες που ριχνω γιατι ακουω τον ηχο αλλα δεν βλεπω ζαρια.

 

Τα σέβη μου

Δημοσ.

Οσον αφορα τα αποτελεσματα αυτο ειναι ολο:

>void roll(int dice[2])
{
#ifndef WIN32
   int fd=open("/dev/urandom",O_RDONLY);
#else
   int fd=0;
#endif
   if(fd)
{
	char bits[8];
	int nbytes=read(fd,bits,8);
	dice[0]=abs(bits[abs(rand()%nbytes)])%6+1;
	nbytes=read(fd,bits,8);
	dice[1]=abs(bits[abs(rand()%nbytes)])%6+1;
	close(fd);
}
else
{
	SDL_Delay(3);
	srand(SDL_GetTicks());
	dice[0]=rand()%6+1;
	dice[1]=rand()%6+1;
}
};

 

16 bytes διαβαζω καθε φορα,

ενω στην εκδοση για win απλα κανω srand,rand.

Δεν ξερω για σενα φιλε qtgeo, αλλα εμενα καπως θα με ξενιζε αν ενα απλο ταβλι μου ελεγε

"Please wait, there is not enough entropy in your system!"

 

Εν πασει περιπτωσει, δε νομιζω οτι εχει σημασια. Απλα τα αποτελεσματα ειναι λιγο καλυτερα.

 

polidis:

Εχω συμβαση με την Nvidia μονο:-D

Αλλα σοβαρα, το προβλημα εχει να κανει με τον φωτισμο και το εχω ξαναδει σε καποιες δοκιμες που εκανα. Αν κοιταξεις καλυτερα απο κατω(κουνωντας το ταμπλω με τα βελακια, ενω εχεις σηκωσει ενα πουλι) εχουν χρωμα απλα ο εντονος φωτισμος τα κανει ολα ασπρα.

Στην εκδοση για linux αυτο λυνεται τρεχοντας με την παραμετρο --no-sep-spec.

Στην εκδοση για windows δεν δεχεται παραμετρους, οποτε για την ωρα δεν λυνεται.

Θα το κοιταξω στην επομενη version. Ισως να βαλω καποιο μονοχρωμο texture η κανα κουμπακι για μειωση της φωτεινοτητας. Θα δειξει...

 

GT1807:

Linux ή windows?

στην πρωτη περιπτωση δεν ξεκιναει χωρις την καταλληλη γραμματοσειρα(courier ή arial), στην δευτερη αποκλειεται να μην εχουν τα windows arial γραμματοσειρα.

Τωρα αν εχεις linux, το προβλημα ειχε εμφανιστει και παλιοτερα σε ati καρτες.

Αν παλι εχεις windows...δεν ξερω τι συμβαινει.

Απλα αν μπορεις πες μου καρτα γραφικων και λειτουργικο.

Και στις δυο περιπτωσεις παντως, το θεμα υπερβαινει τις δυνατοτητες μου γιατι εχω μονο ενα pc με linux και nvidia...

 

 

Και οσον αφορα το παραθυρακι του dos, θα το ψαξω, αλλα αν καποιος μπορει να με βοηθησει καλα θα ηταν.

Κανεις που να ξερει προγραμματισμο windows?:-D

Ισως ειναι το οτι χρησιμοποιω το stderr για τα μυνηματα, ισως παλι και να θελει καποια βιβλιοθηκη παραπανω. Παντως με winmain ξεκιναει.

 

Οσο για τα ζαρια, δεν τα βλεπεις καθολου επανω στο ταμπλω?

Αυτο μου φαινεται πραγματικα παραξενο, ειδικα αν βλεπεις τα υπολοιπα μοντελα.(εκτος και αν εννοεις τον ηχο που κανουν τα μενου)

Σε καθε περιπτωση σε παρακαλω δοκιμασε να πας στο πρωτο κουτακι στην πρωτη οθονη και στο δευτερο, τριτο ή τεταρτο στην δευτερη. Αν πηγες στο πρωτο πηγες στο tutorial που δεν φαινονται τα ζαρια ουτως ή αλλως.

 

 

Ευχαριστω για το χρονο σας.

Δημοσ.

Πωπω...

 

 

Μολις διαπιστωσα ενα bug. Ευχαριστω που εθιξες το θεμα qtgeo:-D .

 

Ο ελεγχος παραπανω πρεπει να ειναι if(fd!=-1) (οποτε και στην περιπτωση για win

η δηλωση πρεπει να ειναι int fd=-1; )

 

Την εχω ξανακανει αυτην την @#!&$...

Δημοσ.

Να κανω μονο μια ερωτηση ;

Επειδη δεν εχω ασχοληθει με προγραμματισμο γραφικων/παιχνιδιων κτλ,

δεν μπορω να καταλαβω τα αρχεια των μοντελων στον φακελο src\models\ , τι ακριβως κανουν ; Παρατηρω οτι υπαρχουν values , ομως , τι σκοπο εξυπηρετουν;

 

πχ:

>
static GLuint pouliFace[]={
			0,1,2,
			0,2,3,
			0,3,4,
			0,4,5,
			0,5,6,
			0,6,7,
			0,7,8,
			0,8,9,
			0,9,10,
			0,10,11,
			0,11,12,
			0,12,13,
			0,13,14,
			0,14,15,
			0,15,16,
			0,16,17,
			0,17,18,
			0,18,19,
			0,19,20,
			0,20,21,
			0,21,22,
			0,22,23,
			0,23,24,
			0,24,25,
			0,25,26,
			0,26,27,
			0,27,28,
			0,28,29,
			0,29,30,
			0,30,31,
			0,31,32,
			32,1,0
};

Δημοσ.

Οι τιμες ειναι indexed vertex arrays. To δευτερο,τριτο και τεταρτο array εχουν ιδιο μεγεθος και ειναι αντιστοιχα: συντεταγμενες διανυσματος, normal διανυσματος(μοναδιαιο δυανυσμα καθετο στο προηγουμενο, χρησιμοποιηται για τον υπολογισμο του φωτισμου) ,και uv συντεταγμενες(για το texture, εαν υπαρχει).

Το πρωτο array αποτελει index σε αυτο των δυανυσματων και καθοριζει τα τριγωνα του αντικειμενου.

Δημοσ.

 

polidis:

Εχω συμβαση με την Nvidia μονο:-D

Αλλα σοβαρα' date=' το προβλημα εχει να κανει με τον φωτισμο και το εχω ξαναδει σε καποιες δοκιμες που εκανα. Αν κοιταξεις καλυτερα απο κατω(κουνωντας το ταμπλω με τα βελακια, ενω εχεις σηκωσει ενα πουλι) εχουν χρωμα απλα ο εντονος φωτισμος τα κανει ολα ασπρα.

Στην εκδοση για linux αυτο λυνεται τρεχοντας με την παραμετρο --no-sep-spec.

Στην εκδοση για windows δεν δεχεται παραμετρους, οποτε για την ωρα δεν λυνεται.

Θα το κοιταξω στην επομενη version. Ισως να βαλω καποιο μονοχρωμο texture η κανα κουμπακι για μειωση της φωτεινοτητας. Θα δειξει...

[/quote']

 

Koita Logika kati alo fteei kai oxi i karta mou.

Oso kai mape na einai h karta pandos ta paixnidakia tis ta apla pou den theloune poles apetiseis se grafika ta paizi.

Malon kati se programatistiko epipedo fteei.Ti na po.

Paratheto ena Screenshot gia na deis oti etsi opos einai den mporis na paixeis Tavli.

 

tavli1fs.jpg

Δημοσ.

Λόγο τεχνικών προβλημάτων με την βιβλιοθήκη SDL και το εργαλείο προγραμματισμού μου (C/C++ Builder 6) δεν μπόρεσα να κάνω compile την εφαρμογή παρʼ όλα αυτά έγραψα μια γενική C ρουτίνα η οποία με βάση το Process ID (GetWindowThreadProcessId) μιας εφαρμογής (ορίζεται στην μεταβλητή _THideConsole.dwPID) αναζήτα (με την βοήθεια των EnumWindows και του EnumTopLevelWindows callback function) όλα τα Console παράθυρα (δηλαδή εκείνα τα παράθυρα που ανήκουν στην Process μας και η κλάση τους ονομάζεται «ConsoleWindowClass» - τουλάχιστον στα XP) κρύβοντας το πρώτο που θα βρει με την βοήθεια της ShowWindowAsync καθώς εξασφαλίζει την αλλαγή κατάστασης για παράθυρα διαφορετικών Threads και συνεπώς δεν μπλοκάρει την εκτέλεση της κλήσης περιμένοντας σώνει και καλά να υλοποιηθεί η αλλαγή (διαφορετικά άλλαξε την σε ShowWindow –δες τι δουλεύει καλύτερα με την SDL). Σε περίπτωση εύρεσης της console επιστρέφεται η τιμή επιτυχίας της ShowWindowAsync όπως καθορίζεται στο Windows SDK (από το SDK: [..]“previously visible window => TRUE , previously hidden window => FALSE”).

 

Η ρουτίνα δοκιμάσθηκε επιτυχώς με το Process ID της εφαρμογή σου (εντοπίσθηκε με την βοήθεια του Task Manager) αν και δεν αποκλείω ασυμβατότητες καθώς η απόκρυψη του Console είναι κάτι που δεν συνίσταται από την Microsoft και δεν ξέρω πως αντιδρά βαθύτερα η υλοποίηση της SDL, αν μάλιστα η τελευταία παρέχει κάποια ρουτίνα που αποκρύβει την Console προτίμησε την.

 

Φυσικά μπορεί να υπάρχουν bugs.

Το που θα τοποθετηθεί στον κώδικα σου δυστυχώς δεν μπορώ να το προτείνω.

 

>
// HIDE CONSOLE STDOUT / STDERR FOR CURRENT RUNNING PROCESS
// DIRECTX BETA.

#include <windows.h> 

struct _TagHideConsole
{
  HWND  hwndCON;
  DWORD dwPID;
}_THideConsole;

BOOL  CALLBACK EnumTopLevelWindows(HWND hWnd,LPARAM lParam)
{
  // Match hWnd PID with our , ignore thread id.
  DWORD dwPID;
  char  szClassName[33];

  GetWindowThreadProcessId(hWnd,&dwPID);
  if(dwPID==_THideConsole.dwPID)
   {
     // Get Window class , for console it should be 'ConsoleWindowClass'
     if(GetClassName(hWnd,&szClassName,sizeof(szClassName)))
      if(!lstrcmp(szClassName,"ConsoleWindowClass"))
       {
         _THideConsole.hwndCON = hWnd;
         return FALSE;    // Our process SDL window found - break enumeration!
       }
   }

  return TRUE;            // Continue Top level windows enumeration
}

BOOL _HideConsole(void)
{
  // Initialize _THideConsole members
  _THideConsole.hwndCON = NULL;
  _THideConsole.dwPID   = GetCurrentProcessId();

  // Enumerate all top-level windows
  EnumWindows((WNDENUMPROC)EnumTopLevelWindows,0);

  // Did we found our process SDL Console HWND?
  if(_THideConsole.hwndCON!=NULL)
   return  ShowWindowAsync(_THideConsole.hwndCON,SW_HIDE);

  // No, we did not! 
  return FALSE;
}

 

Υ.Γ.

Ο απλός εντοπισμός του παράθυρου με FindWindow ή FindWindowEx δεν είναι επαρκείς καθώς από ότι είδα ο τίτλος αλλάζει με βάση το install directory ενώ υπάρχει και ο περιορισμός στους διαθέσιμους χαρακτήρες.

Δημοσ.

Μα καταλαβα τι εννοουσες και δεν θεωρω οτι φταιει η καρτα σου.

Απλα υπαρχουν διαφορες σε καποια θεματα, αναλογα με το gpu, τις οποιες δεν μπορω να γνωριζω.

Γι'αυτο αλλωστε και οι εταιριες παιχνιδιων δοκιμαζουν τα παιχνιδια τους με ολες τις εμπορικες καρτες πριν τα βγαλουν.

Οπως ειπα ειναι το θεμα του φωτισμου, εφοσον φαινονται και τα μαυρα περιγραμματα γυρω απο καποια πουλια.

Στην επομενη εκδοση θα βαλω καποια ρυθμιση για μειωση του φωτισμου.

 

Υ.Γ1. δεν το λεω για να υπερασπιστω την αρτιοτητα του κωδικα μου, ο οποιος ουτως ή αλλως βριθει απο bugs, απλα ξερω περι τινος προκειται εφοσον το εχω συναντησει και παλιοτερα.

 

Y.Γ2. αν δεν βαριεσαι, κατεβασε αυτo (ειναι σκετο το εκτελεσιμο) και πες μου:

http://tavli3d.dotgeek.org/tavli3d.exe.zip

(350 κb ειναι)

Δημοσ.

Υ.Γ.

Ο απλός εντοπισμός του παράθυρου με FindWindow ή FindWindowEx δεν είναι επαρκείς καθώς από ότι είδα ο τίτλος αλλάζει με βάση το install directory ενώ υπάρχει και ο περιορισμός στους διαθέσιμους χαρακτήρες.

 

 

Γιατι δεν μετονομαζεις τον τιτλο της κονσολας ;

system("title Tavli 3D");

Δημοσ.

Παιδια, ευχαριστω για τις ιδεες σας. Δοκιμαστε αυτο, αν μπορειτε:

 

http://tavli3d.dotgeek.org/tavli3d.exe.zip

 

Φιλε polidis αν μπορεις δοκιμασε το και εσυ, καθως εχω απενεργοποιησει τελειως τον specular φωτισμο, ωστε να δω αν το προβλημα σου ειναι κατι αλλο απο αυτο που νομιζα.

 

Υ.Γ. Η αλλαγη που εκανα οσον αφορα την κονσολα ειναι στην αρχη του προγραμματος. Προσθεσα τις εξης γραμμες:

 

HWND hide;

AllocConsole();

hide = FindWindowA("ConsoleWindowClass", NULL);

ShowWindow(hide, 0);

Δημοσ.

biocrasher φυσικά και δεν ενωούσα να περιμένεις για εντροπία αλλά έτσι κι αλλιώς όπως το έχεις υλοποιήσει πάλι πέρνεις τα ίδια ζάρια κάθε φορά.

int nbytes=read( fd,bits,8 );

Δέν ορίζεις πουθενά ούτε αποθηκεύεις ένα offset του σημείου που ίσουν πριν στο /dev/urandom και δέν σημαίνει ότι στην επόμενη κύκλα το urandom θα έχει αλλάξει περιεχόμενο.

Είναι λάθος!

Επίσης έχεις κάνει και άλλο σημαντικό λάθος εδώ:

 

dice[0]=rand()%6+1;

dice[1]=rand()%6+1;

 

Κατά κανόνα για καλυτερα αποτελέσματα δέν πρέπει να πειράζεις τα low bits αλλά τα high bits και έπίσης έτσι παίρνεις και την τιμή μηδέν που είναι μή αποδεκτή στα ζάρια σου...

 

Το σωστό είναι ...=1+6*rand()/(RAND_MAX+1.0); αν δεν κάνω λάθος

 

Άσε δε που για ακόμα καύτερα αποτελέσματα άν θές χρησιμοποίησε την random()....

 

C Ya!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...