Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 28.5.2010, 12:17   #1
Alek
Veteran
 
Član od: 23.10.2006.
Lokacija: Nis
Poruke: 795
Zahvalnice: 60
Zahvaljeno 54 puta na 51 poruka
Slanje poruke preko MSN-a korisniku Alek
Određen forumom Karte u c#

Pozdrav, vidim da u ovom delu foruma ima dosta ljudi koji se bave programiranjem u c# (irreal, holodoc...) pa bih zamolio za malu pomoc.
Nemam nekog velikog iskustva sa programiranjem (znam osnove, ucio sam i na faksu i ovako, ali nije to nista konkretno, vise teoretisanje i presipanje iz supljeg u prazno..) ali pokusavam da se malo zezam sa c# i da napravim aplikaciju koja treba da bude kao neka igra sa kartama. Za pocetak bi mi bilo dovoljno da napravim bilo sta, makar i da se samo karte izmesaju i podele dvojici igraca a kasnije cu da malo po malo ubacujem logiku i (ako bude zdravlja, srece i pameti ) napravim aplikaciju za igranje preferansa (to mi je krajnji cilj).
E sada, problem je prvenstveno ideja, posto nemam iskustva sa OOP, treba mi savet kako da pocnem. Malo sam se zezao i napravio tablu (sto), i na njemu obelezeno polje za jednog igraca, jednu "kartu" u uglu stola i mogucnost da misem moze da se "uhvati" karta i ukoliko se otpusti u polje predvidjeno za igraca automatski podesi na odredjenu lokaciju. To je bilo samo za probu, cisto sam isprobavao rukovanje mouse_move, mouse_up, down itd eventima. Poenta je u tome sto sam za "kartu" koristio obicno dugme kome sam nalepio sliku i to je to.
Treba mi savet kako da ovu ideju isprogramiram malo vise objektno (to je ujedno i deo koji mi zadaje najvise muka jer sve do sada sto sam o programiranju ucio uglavnom je bilo strukturno pa mi nije tako jednostavno da se prebacim na totalno drugaciji koncept). Dakle da li i kako da napravim neku klasu "karta" koju bih mogao da nasledjujem i od nje pravim objekte na "tabli", mislim, mogu i ovako sa dugmicima ali mislim da je nije bas najsrecnije resenje. Svakako ce mi trebati posle za svaku kartu tj objekat ponaosob da ima i svoje propertije tipa "broj karte", svaka svoju sliku, pozadina (kada su okrenute) itd itd...
Jeste malo duzi post ali pokusao sam da objasnim lepo sta mi treba kako bih dobio sto bolji odgovor.

ps: e da, pokusao sam i da recimo napravim klasu "kvadrat" i da posle iscrtavam te kvadrate i to je ok ali ne umem da joj dodelim klik evente kao sto ih dugmad vec ima. Takodje mi je sa dugmetom bilo jednostavno da napravim drag'n'drop koristeci "bounds" metode.
Hvala unapred.
Alek je offline   Odgovor sa citatom ove poruke
Stara 28.5.2010, 12:53   #2
irreal
V.I.P. Programiranje
 
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
Određen forumom Re: Karte u c#

uf, tema je prilicno opsirna, a ja sam trenutno sa vremenom kratak.

sto se tice nabavljanja samih slika karata i pozadina za iste, predlazem ti da koristis microsoftov cards.dll.

evo ga clanak koji ce ti objasniti kako da dodjes do slika

http://www.codeproject.com/KB/cs/drawcardscp1.aspx

ono sto je daleko komplikovanije je upravo kako ces da predstavis te slike i kako ces njima manipulisati.

evo par predloga:

najosnovniji nacin bi bio da karte budu picturebox kontrole. skines im border i eto, imas kontrole koje primaju event-ove, prikazuju sliku karte, imaju poziciju, itd.
mana je sto picturebox kontrole bas i nisu namenjene za ovakvu upotrebu, pa ce animacija karata kada se dele ici teze nego sto bi trebalo, a i generalno ce vise resursa aplikacija da vuce ako u jednom trenutku pomeras 30-ak picture box kontrola po formi.


druga alternativa je da se sam crtas unutar jedne kontrole (ili forma ili jedan veliki picturebox) tu bi morao da se oslanjas na generalne mouse event-ove za ceo prozor pa sam da racunas da li je neka, i koja, karta kliknuta, sam da odradis drag & drop i sve ostalo sto je potrebno.
nije to toliko komplikovano kolko zvuci, jednostavno na svakom mouse eventu ces proci kroz neku svoju listu karata i uporediti koordinate, par opstih varijabli za pracenje stanja (klikce, vuce, samo prelazi misem preko, itd).


treca alternativa je da napravis sam svoju kontrolu. ne znam kolko bi imao uspeha da je prilagodis i da dobijes bolju stvar od picturebox kontrole, uz malo guglanja i eksperimentisanja, trebao bi da mozes da obavis posao.


ja bi licno verovatno izabrao metodu broj 2, ali nemam sada vremena da detaljno razmislim, mozda smislim i neko bolje resenje.

ma da moze sigurno sasvim solidno da prodje i koriscenje picturebox kontrole, ako igra ne treba da bude ultra fensi glatko animirana.


sto se tice data organizacije iza svega toga.

da, definitivno klasa Karta!
e sad, u zavisnosti od toga koji metod rada izaberes, tu klasu ces ili praviti od nule ili naslediti klasu PictureBox (ili neku drugu)

mogu ja sada ovde sat i po vremena da kuckam o razlicitim mogucnostima kako ta klasa moze da izgleda i sta da radi, kombinacija je zaista bezbroj.
umesto toga uradicu nesto drugo, cim budem uhvatio malo vremena, napravicu svoju implementaciju osnovne klase karta, prilagodjene za windows forme, pa cu ti dati source da vidis moje idejno resenje (sto ne znaci da ne postoji neko mnogo pametnije, mozda ga i ti sam smislis)

spomenucu ti jos da sam pre 4-5 godina napravio bas preferans, ali u VB6.
koristio sam image kontrole. nije bila losa igra, radila je preko lan-a ili net-a (winsock) i dosta sam pikao sa drugarima i mojim ocem.
ne znam dal bi negde iskopao sad to, ko zna kolko je hardova proslo u medjuvremenu, ali sigurno mogu da ti pomognem oko same logike pravljenja preferansa, kada do toga dodjes.

sve u svemu, nije kraj, nastavice se, kad uhvatim vremena ucicu daleko dublje u teoriju i praksu igara sa kartama u c#.

za sada, moram da idem, duty calls
irreal je offline   Odgovor sa citatom ove poruke
Stara 28.5.2010, 20:59   #3
Ivan-94
Veteran
 
Član od: 15.3.2009.
Lokacija: Beograd
Poruke: 654
Zahvalnice: 240
Zahvaljeno 63 puta na 43 poruka
Slanje poruke preko MSN-a korisniku Ivan-94 Slanje poruke preko Skypea korisniku Ivan-94
Određen forumom Re: Karte u c#

Posto citam knjigu Beginning Microsoft Visual C# 2008 skoro sam dosao do dela OOP.Tu imas sjajan primer bas za Card Library.

Za karte(pik,tref...):
Kod:
using System;
using System.Collections.Generic;
using System.Text;
namespace CardLibrary
{
public enum Suit
{
Club,
Diamond,
Heart,
Spade,
}
}
Za njihove vrednosti:
Kod:
using System;
using System.Collections.Generic;
using System.Text;
namespace CardLibrary
{
public enum Rank
{
Ace = 1,
Deuce,
Three,
Four,
Five,
Six,
Seven,
Eight,
Nine,
Ten,
Jack,
Queen,
King,
}
}
Svaki od njih u posebnoj klasi,znaci Suit.cs i Rank.cs.

Klasa za karte:
Kod:
public class Card
{
public readonly Suit suit;
public readonly Rank rank;
public Card(Suit newSuit, Rank newRank)
{
suit = newSuit;
rank = newRank;
}
private Card()
{
}
public override string ToString()
{
return "The " + rank + " of " + suit + "s";//Kad pozivas .ToString() ovo se prikazuje a ne nesto sto ne razumes.
}
}
Za spil karata:

Kod:
using System;
using System.Collections.Generic;
using System.Text;
namespace CardLibrary
{
public class Deck
{
private Card[] cards;
public Deck()
{
cards = new Card[52];
for (int suitVal = 0; suitVal < 4; suitVal++)
{
for (int rankVal = 1; rankVal < 14; rankVal++)
{
cards[suitVal * 13 + rankVal -1] = new Card((Suit)suitVal,
(Rank)rankVal);
}
}
}
public Card GetCard(int cardNum)
{
if (cardNum > = 0 & & cardNum < = 51)
return cards[cardNum];
else
throw (new System.ArgumentOutOfRangeException("cardNum", cardNum,
"Value must be between 0 and 51."));
}
public void Shuffle()//Mesa karte
{
Card[] newDeck = new Card[52];
bool[] assigned = new bool[52];
Random sourceGen = new Random();
for (int i = 0; i < 52; i++)
{
int destCard = 0;
bool foundCard = false;
while (foundCard == false)
{
destCard = sourceGen.Next(52);
if (assigned[destCard] == false)
foundCard = true;
}
assigned[destCard] = true;
newDeck[destCard] = cards[i];
}
newDeck.CopyTo(cards, 0);//Kad bi koristio newDeck=cards doslo bi do greske
}
}
}
E sad ti to prilagodi tebi ovo je bukvalno copy/paste iz knjige sa par mojih komentara.Ako ti nesto nije jasno pitaj.
Ivan-94 je offline   Odgovor sa citatom ove poruke
Stara 31.5.2010, 8:06   #4
Alek
Veteran
 
Član od: 23.10.2006.
Lokacija: Nis
Poruke: 795
Zahvalnice: 60
Zahvaljeno 54 puta na 51 poruka
Slanje poruke preko MSN-a korisniku Alek
Određen forumom Re: Karte u c#

Hvala puno, ova ideja sa picturebox je upravo ono sto sam trazio i probacu malo da se zezam sa tim a sto se tice koda sto je postavio ivan pokusacu da ga prilagodim sebi. Upravo uzimam u razmatranje obe varijante pa cu da nesto izmuvam nadam se
Ako bude bilo nekog napretka napisacu.
Pozdrav
Alek je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Leadtek TV karte wolf88 ŠDK - Ostale komponente 20 18.5.2010 16:35
HD 5670 grafičke karte Dusan Despotovic Grafika 114 10.4.2010 3:04
Nove lične karte (elektronske)... dzonihsv Brbljaonica 164 9.12.2009 23:36
AMD prekida sa podrškom za starije karte od aprila Dusan Despotovic Vesti 5 8.3.2009 0:10
AGP karte bez HSI chipa Muad Dib Grafika 10 25.10.2006 14:23


Sva vremena su po Griniču +2 h. Sada je 3:00.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2020, vBulletin Solutions, Inc.
Hosted by Beograd.com