ups, nemal som initializovanu instanciu z tej triedy :D, lebo koli tomu pokusu som viac veci dal do komentu
Příspěvky odeslané z IP adresy 85.159.104.–
ak vam to pomoze tak Position je z struktury Vector2f:
template <class T>
struct Vector2
{
T X, Y;
Vector2()
{
X = 0;
Y = 0;
};
Vector2(const T& x,const T& y )
{
X = x, Y = y;
};
Vector2& operator+(const Vector2& r ) const
{
return Vector2( this->x + r.x, this->y + r.y );
}
Vector2& operator-(const Vector2& r ) const
{
return Vector2( this->x - r.x, this->y - r.y );
}
Vector2& operator*(const Vector2& r ) const
{
return Vector2( this->x * r.x, this->y * r.y );
}
Vector2& operator/(const Vector2& r ) const
{
return Vector2( this->x / r.x, this->y / r.y );
}
};
typedef Vector2<int> Vector2i;
typedef Vector2<float> Vector2f;
typedef Vector2<double> Vector2d;
Zrazu mi prestalo ist a vypisalo Segmentation fault, pomocou debuggera som zistil ze to zblbne pri prikaze:
this->Position.X = mousepos.X - (this->Size.X / 2);
a tiez aj pri prikaze this->Position.X = 0;
stalo sa to potom ako som si vsetky projekty workspace chcel dat kompilovat do jedneho priecinka a ked sa mi to nepodarilo tak som zavrel Code::Blocks a neulozil projekty cize zostali povodne nastavenia ale odstranil som povodne bin a obj a tez mi to neslonemylim sa ak si myslim??:
Vector2f& - vrati hodnotu ale sa nebude kopirovat v pameti
const(na konci) - instancia triedy nebude zmenena resp moze sa volat aj z: const ClassName a;
const(na zaciatku) - narvratova hodnota nemoze byt menena
mozete mi vysvetlit co presne znamena tento prototyp
const Vector2f& GetObjectMinSize() const;
P.S.: a neviete com sa mi po prihlaseni nacita biela strana ala ma neprihlasi?? :(
napr. zakladna struktura aka by mala by ale napadla mi jedna vec:
interface IBehavior
{
void Move(float timedelta);
}
interface IDrawer
{
void Draw();
}
class MyObject
{
IBehiavior Behavior;
void Update_Move()
{
this.Behavior.Move( 0.16f );
}
IDrawer Drawer;
void Draw()
{
this.Drawer.Draw();
}
}
nenapada vas nahodou lepsie riesenie??To jirka : asi by som to tak skusil, ale pomocou:
struct VelkeCislo
{
decimal a; // koli tomu aby sa neprepisalo daco predtym
public decimal Cislo; // ale neviem ci nahodou sa dlhsie cislo nenapise za toto, cize ci nema byt "a" az po tomto
}
To Lordest : ak nepotrebujes gui tak ti postaci kniznica GLFW || GLUT( neskusal som ) || SDL( nepaci sa mi ).
ak by si chcel nacitat nejake obr. tak ti dost pomoze kniznica DevIL, ktoru si tiez ako tie predchadzajuce mozes naistalovat ako balicek( ubuntu && kubuntu na 100% ).
To pitris : kam dosta??
ak spustis refovery mode, tak tam budes mat nejakevecisky na samoopravenie systemu, ale neviem ci to pojde.
inac, windows ani ja nechcem, len co som ho naistaloval a siel na prvu str. www.avast.cz a naistaloval, tak uz mi hlasilo virus
To pitris : tak urob mensi pokus, spusti synaptic( System->Sprava->Sprava balikov synaptic ), daj vyhladat gstreamer a daj zoradit podla nazvu, zaskrtni vsetko co sa zacina na gstreamer ale nekonci na dev alebo dbg, tie obidve su pre developerov
problem vyresieny, odstranil som v oboch projektoch rucne bin, obj, pre pokus a potom mi hodilo ze nevie nast Engine, tak som sa pozrel do Engine/bin/debug a tam uz bol len Engine.so a nie aj Engine.a ( co to vlastne je a preco ho tu teraz nemam?? ), tak som rucne nastavil cestu ku Engine.so
no tu som to este nevidel, pokial som tu ja. Skus System->Predvolby->Zvuk mozno tam nieco najdes, ak ti to nepomoze tak daj si vyhladat v googli: ubuntu 9.04 ( nazov zvukovky ), a k tomu este drivers problems,...
EDIT: ja som zatial problem so zvukom nemal( ked nepocitam skype de som si musel zvolit rucne a ne automaticky ), len s graf. acceleraciou.
to som uz urobil, linkol( no vymazal a znova linkol) som glfw v hre a mi to spustilo ale mam tu druhy problem: ked zmenim nieco v engine tak sa mi ni nezmeni, sice mi to buildne(ak s chybou tak ju vypise), ale aj tak sa mi nic v to nepouzije v tom druhom projektu. Skusal som aj clean workspace, rebuild nic nepomohlo
to som dal, a k search directories netreba dat nic, alebo link library??
ked to dam v linkoch hry tak mi v prikaze v engine pise undefined reference.
ked to dam v linkoch enginu tak mi pise:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib/libglfw.a(init.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib/libglfw.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
cital som ze sse je pre 128bitove struktury, moze byt ta struktura mensia??
a pouzije sa sse ak je struct v inej struct??
a pouzije sa sse ked:
struct vector2f
{
float X, Y;
}
struct obj
{
vector2f pos, speed;
}
...
speedchange = vector2f( 12, 25 );
for( int i = 0; i < count; i++)
{
objs[i].pos += speed;
objs[i].speed += speedchange;
}
??
pripadne podporuje tote veci sse2, ss3, ak nie predchadzajuca??
aky je rozdiel medzi tymito operatormi??
napr.: ak mam vlastny Vector2{ float X, T } a pouzivam viac veci( nejaky Graphics Engine a Physics Engine ), a chcem nadefinovat konvierziu, tak je lepsie pouzit implicit ci explicit, podla mna implicit lebo uz nemusim stale pisat napr. (PE.Vector2)Position. Aky je vas nazor??
simoniak napsal:
jo, dekuji, tohle jsem potreboval. Je pravda, ze na MSDN moc hledat neumim, vetsinou me tam odkaze az google.
neviem, ake IDE pouzivas, ale ak pokrocilejsie tak by si to mal v pohode vyklikat a podla nazvov si domysliet, co co znamena, a mne pise pri ukazani na metodu aj jej navratovy typ.
simoniak napsal:
a nešlo by nějak z té metody vytáhnout jen jména (všech uživatelů) a jako stryng následně vypsat?..
:D vela by si chcel, ale ja by som to aj tak nechcel dostat rovno do stringu, koli tomu ze sa potom robia zlozito upravy, napr. ak chces z toho vytvorit tabulku.
A od kedy sa v .Net premenoval string na stryng :D
Edit: A z metody nevytiahnes nic, ona ti len vrati udaje( bud na zaklade vstupu( vecsinou pri statickych ) alebo na zaklade objektu )
Ale mozes zo ziskanych udajov urobit string, len sa trochu posnaz :D
Pouzi implicit alebo explicit operatory:
implicit mas sem:
using System;
namespace Testing
{
struct A
{
public int n;
public float m;
static public implicit operator int( A a )
{
return a.n + 5;
}
static public implicit operator A( int n )
{
A a = new A();
a.n = n - 5;
return a;
}
public override string ToString ()
{
return string.Format("[A: n = {0}, m = {1}]", this.n, this.m);
}
}
class MainClass
{
public static void Main()
{
int n = 10;
Console.WriteLine( n );
A a = n;
Console.WriteLine( a.ToString() );
a.n++;
Console.WriteLine( a.ToString() );
n = a;
Console.WriteLine( n );
}
}
}
Skus: IConvertible : http://msdn.microsoft.com/en-us/library/system.iconvertible.aspx
kus ti pomozem:
public static void Main()
{
string Line = Console.ReadLine();
int p = 0;
string Action = "";
while( Line[p] != Char.Parse("("))
{
Action += Line[p].ToString();
p++;
}
string[] prms;
if(Line[p] != Char.Parse(")"))
{
prms = new string[1] { "" };
p++;
}
else
prms = new string[0];
int cp = 0;
while( Line[p] != Char.Parse(")") )
{
if( Line[p] != Char.Parse(",") )
{
prms[cp] += Line[p].ToString();
}
else
{
Array.Resize<string>( ref prms, ++cp + 1 );
prms[cp] = "";
}
p++;
}
Console.WriteLine( Action + " : ");
foreach( string s in prms )
{
Console.WriteLine( s );
}
}
OutPut:asd( sadsad, gsdf, 5464 )
asd :
sadsad
gsdf
5464
To Chrasty : problem bol v tom ze som nedosiel ani do 2. dielu serialu( metoda Join() )
:D nuz stava sa
Edit: A k tomu pristupu k objektom, tak pri Stepe mam kopiu arrayu objektov pri zaciatku, ale aj pri stepe sa mi vytvarau objekty a problem bol v tom ze uz zacalo vykreslovat a objekt nebol hotovy.
tak toto teda neni dobre, Console.WriteLine( "ThreadEnd: "+objID+" "+Thread.CurrentThread.Name);
0
2
3
4
5
6
7
ThreadEnd: 8
ASDSAD1 // Uz cely cyklus hry stihol prejst este raz( mam tam viac stepov ( pretoze pri multiT, nemozete sa pohybovat aj zistovat kolizie), ale ten zatial robim multi
ThreadEnd: 9 ASDSAD // kym sa toto vlakno skoncilo
0
2
3
ASDSAD1
ASDSAD5
4
7
ASDSAD6
ThreadEnd: 8
ThreadEnd: 9 ASDSAD
Kedze je toto moja prva vec vo vlaknach( chcem vytvorit multithreading ) tak sa chcem spytat ci to nemam horsie ako si myslim.
{
GameObject[] objs = this.GameObjects.ToArray();
int StepCurrent = 0;
int StepMax = objs.Length;
ThreadStart Step1_Objects = delegate {
int objID;
while( ( objID = StepCurrent++) < StepMax )
{
if( objs[objID].Activity >= this.MinimumActivity )
objs[objID].Step1_Internal( TimeDelta );
Console.WriteLine( Thread.CurrentThread.Name + objID.ToString() );
}
};
Thread t2 = new Thread( Step1_Objects );
t2.Start();
t2.Name = "ASDSAD";
Step1_Objects();
this.Step1( TimeDelta );
}
A tym ze je to zle myslim nato ze to nepocka asi na druhe vlakno, kym skonci, a tak mi hodi exception ktora je v subore.
To marpit :
Aj tak je tu jedna chyba, neviem ci sa to da cez WinForms, ale v gtk to je:
public class ArticleNode : Gtk.TreeNode
{
public ArticleNode(int id, string name)
{
this.ArticleID = id;
this.Name = name;
}
public int ArticleID;
[Gtk.TreeNodeValue (Column=0)]
public string Name;
}
...
Gtk.NodeStore store = new Gtk.NodeStore(typeof (ArticleNode));
...
store.AddNode(new ArticleNode(id,name));
...
store.Clear();
...
int id = ((ArticleNode)store.GetNode(args.Path)).ArticleID;
string name = ((ArticleNode)store.GetNode(args.Path)).Name;
to su len vyseky mojho kodu
Lebo ja si potom mozem dat zoradit podla nazvu a tym padom aj ked vyberies to co bolo na x, tak vlastne dostanes to co bolo na y.
Byt tebou tak si vytvorim vlastny prvok ktory do toho das, a bude obsahovat Color color, ktory potom dostanes po zmeneni objektu
prouzek1.BackColor = prvok.color;
Lenze ja som skusal neco s GTK, a ne WinForms cize ti neviem presne napisat kod
Edit: Vyhoda je ze ked si das zoradit, ... tak dostanes to co chces a ne podla poradia
Na msdn je to takto
interface I
{
}
class C<T> where T : I
{
}
class B
{
}
class CMain
{
public static void Main()
{
Console.WriteLine(new C<B>()); // CS0309
}
}
Ale moj pripad sa trochu lisi lebo:
interface I
{
}
class C<T> where T : I
{
}
class B: I
{
}
class X<T> where T: C<I>
{
}
class Y: X<B>
{
}
class CMain
{
public static void Main()
{
Console.WriteLine(new Y()); // CS0309
}
}
nahodou som nasiel benchmark, ktory bol zamerany na Ubuntu vs Win7 ale je tam aj min. miesto na disku:
http://www.tuxradar.com/node/33
neviem ci aj vy tak mate ale mne po prvom spame v .NET foru vzdy zobrazovalo skut. pocet sprav + 2 (RSS), a este aj v inych forach a teraz je to +4, preco??
mozno ze spamov bolo viac, ale kym som tu ja tak este boli len 2
Mne to robilo, ak som pri resize window, nezmenil GL projection, skus tam neco v tom graphics najs. Lebo tebe sa zvecsi prvok v okne ale graphic asi o tom nic nevie??
Edit: Ale bo sa tym asi ten img v tom picboxu nezmenil, lebo mas gr from img
napisu nasledujici kod:
Enemy soldier = new Soldier();
soldier.draw(gr);,
vykresli se Enemy.image nebo Soldier.image? Myslim ze by se mel vykreslit Enemy.image (coz je presne to, co nechci)
nevykresli lebo sa utvori novy obj z Triedy Soldier, ale ak by mal soldier nejake funkcie naviac, napr. Fire(), tak by si to mohol urobit
(soldier as Soldier).Fire(); // alebo
((Soldier)soldier).Fire(); // neviem aky je rozdiel
Edit: A image je struct alebo class, lebo ak struct tak ti to bude vzdy kopirovat pokial nepouzijes ukazatel,
cize vytvoris 1000 objektov cize 1000x image, cize zapraskas dost ram
static object obj // moze byt vsade
static abstract object obj // nemoze byt
Ale mozes pouzit:
abstract class Enemy
{
protected /* alebo public */ Image img;
public void Draw()...
}
sealed class Soldier // nemusi byt sealed
{
static Image img = ??;
public Soldier()
{
this.img = img;
}
}
sealed class Tank // nemusi byt sealed
{
static Image img = ??;
public Tank()
{
this.img = img;
}
}
Takto to riesim ja, ale ja nemam image, ale Texture a Draw() mi nakresli napr. stvorec na obj.Pos, velkosti obj.Size s texturou obj.img
Edit: mohol by si to mat ako Enemy: GameObject_Rectangle // ten by uz obsahoval draw na obdlznik,
A trochu si tomu static asi nepochopil