Mam teraz sporo wolnego czasu i chcę zrobić sobie jakiś większy projekt w C++, żeby się nauczyć, lepiej poznać język i nabrać trochę doświadczenia.
Nie mam jednak pomysłu co mógłbym zrobić, żeby trochę przy tym posiedzieć. Podpowiedzcie mi, czym można się zająć, może mieliście na studiach jakieś większe programiki do zrobienia, nie bardzo skomplikowane, ale takie gdzie trzeba trochę posiedzieć i pisać :)
Większy projekt na wakacje
- Rejestracja: dni
- Ostatnio: dni
- Postów: 268
- Rejestracja: dni
- Ostatnio: dni
- Postów: 7
najlepiej jak napisz coś co Cię wciąga np. prosta gierka, potem bardziej złożone (na początek bez interfejsu graficznego)
może też być coś dostatecznie złożonego, a jednocześnie nietrudnego np. klasa DuzaLiczba z operacjami + - * / i te działania są dostatecznie szybkie
- Rejestracja: dni
- Ostatnio: dni
https://warosu.org/data/g/img/0441/94/1410874830625.png może coś z tego? :D
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Hong Kong
napisz prosta gierke rpg, to daje duzo frajdy imo
- Rejestracja: dni
- Ostatnio: dni
- Postów: 268
Jakie gry macie na mysli? Konsolõwka? Czy z jakąs biblioteka graficzną?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 535
polecam prosty symulator redstone'a z minecrafta :) albo rozbudowana wersja... nie potrzebujesz do tego zaawansowanej grafiki, za to można się pobawić logiką
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Hong Kong
mam na mysli tekstowa gre rpg pod windowsa lub linuxa, jesli czujesz sie na silach to dorzuc jakas grafike
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2412
Napisz co już umiesz i w którą stronę chcesz iść.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 268
Nigdy nie robiłem niczego z biblioteką graficzną :) W C++ coś tam już umiem, może nie dużo. Ogólnie mógłbym spróbować. A coś poza grami? Jakiś pomysł na program?
Jeśli te RPG to jakie?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Pomorskie (Stare Kabaty)
Czujesz że kiepsko kumasz klasy, to napisz coś gdzie będzie trzeba jakąś dosyć przemyślaną hierarchie klas.
Może chcesz poćwiczyć szablony, to napisz sobie np. jakieś klasy macierzy i wektorów.
Co do pytania o RPG, to chyba nie pytasz o fabułe, nie?
Przecież to ma być twoja gra, i z tą fabułą to jest tak, że nie warto zaczynać pisać RPG-a jak nie ma sie jej dokładnie obmyślanej. Sam sie na tym przejechałem ;p
- Rejestracja: dni
- Ostatnio: dni
Zrób platformówkę. Układ jest prosty. Możesz tez wspomóc sie układem UML.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 268
Co do RPG to właśnie nie mam koncepcji ;)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 373
Bartolinho10 napisał(a):
Co do RPG to właśnie nie mam koncepcji ;)
Postać porusza się po mapie globalnej i w losowych miejscach(albo nie losowych) atakują ją przeciwnicy. Systemu walki turowy(coś jak w margonem walka). Oczywiście są miasta, ale proste statyczne tło z budynkami gdzie tylko klikamy myszką albo proste menu z wyborem coś à la Heroes III. Zawartość sklepu zmieniana co 5 minut. Jakaś prosta mini-gra(np. kości) Wszystko oprawione w grafikę wzorowaną na lata 90/pierwszy Final Fantasy.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Krasnystaw
- Postów: 1185
Bartolinho10 napisał(a):
Nigdy nie robiłem niczego z biblioteką graficzną :) W C++ coś tam już umiem, może nie dużo. Ogólnie mógłbym spróbować.
Ogólnie to możesz spróbować z QT, ewenatualnie GTK albo wxWidgets ale chyba najlepiej z QT, bo z tego co przeglądałem dema ma ciekawe możliwości i motywy graficzne.
A coś poza grami? Jakiś pomysł na program?
To mam dla Ciebie propozycję napisania prawdziwego kilera :-) Zamiast gry która nie wiadomo czy będzie użyteczna napisz np. odtwarzacz mp3 taki który będzie miał:
- regulację głośności z loudness, regulacja głośności liniowa i logarytmiczna
- regulacja balansu
- regulacja bazy stereo (od mono do super stereo)
- korektor graficzny (np. 3 pasmowy albo najlepiej profesjonalny na 31 pasm)
- ładowanie predefiniowanych ustawień equalizera oraz zapis własnych
- echo
- zniekształcenia (skrośne, przesterowanie, może nawet emulacja wzmacniacza lampowego)
- odtwarzanie randomowe
- ulubione utwory i ich częstsze odtwarzanie
- ładna szata graficzna
Jak by co mogę pomóc bo sam coś takiego napisałem, tylko nie w C++ :-) Ale Ty możesz się sporo na czymś takim nauczyć, możesz zareklamować i może się spodoba. Nie wiem tylko z jakiej biblioteki trzeba by skorzystać pod C++ żeby odtwarzać mp3.
- Rejestracja: dni
- Ostatnio: dni
Zgłoś się do @fasadin. Z tego co wiem on nadal szuka ludzi do projektu (gry).
- Rejestracja: dni
- Ostatnio: dni
drorat1 napisał(a):
Ogólnie to możesz spróbować z QT, ewenatualnie GTK albo wxWidgets ale chyba najlepiej z QT, bo z tego co przeglądałem dema ma ciekawe możliwości i motywy graficzne.
QT to QuickTime. Ja wiem czy to dobre do programowania gier.
Co innego Qt. Cross-platformowe IDE.
- Rejestracja: dni
- Ostatnio: dni
Proszę bardzo. Zacznij od początku. FizzBuzza polecam - ale odnośnie niego radziłbym Ci abyś sam i tylko sam go rozwiązywał/próbował i dopiero wtedy gdy będziesz pewny/prawie pewny swego kodu, sprawdził na internetach czy myślisz poprawnie. Pracodawcy lubią dawać fizzbuzza jako zadanko czy potrafisz klepnąć jakąś pętle poprawnie. +gdn8
- Rejestracja: dni
- Ostatnio: dni
<quote="1155515">
drorat1 napisał(a):
Co innego Qt. Cross-platformowe IDE.
Chyba chodziło Ci o Qt Creator.
- Rejestracja: dni
- Ostatnio: dni
Michalk001 napisał(a):
Bartolinho10 napisał(a):
Co do RPG to właśnie nie mam koncepcji ;)
Systemu walki turowy
Możesz się powzorować na tym:
using System;
using System.Collections.Generic;
using System.Text;
namespace RPGFightSystem
{
class Monster
{
public string Name { get; set; }
public int baseDamage { get; set; }
public int diceSides { get; set; }
public int damageBonus { get; set; }
public int health { get; set; }
public int givenExperience { get; set; }
public Monster Clone()
{
Monster m = new Monster();
m.Name = this.Name;
m.baseDamage = this.baseDamage;
m.diceSides = this.diceSides;
m.damageBonus = this.damageBonus;
m.health = this.health;
m.givenExperience = this.givenExperience;
return m;
}
}
class Game
{
public List<Monster> availableMonsters = new List<Monster>()
{
new Monster() { Name = "Rat", baseDamage = 1, diceSides = 3, damageBonus = 0, health = 15, givenExperience = 3},
new Monster() { Name = "Bat", baseDamage = 1, diceSides = 2, damageBonus = 0, health = 15, givenExperience = 4},
new Monster() { Name = "Goblin", baseDamage = 1, diceSides = 4, damageBonus = 0, health = 25, givenExperience = 7},
new Monster() { Name = "Wolf", baseDamage = 1, diceSides = 5, damageBonus = 0, health = 30, givenExperience = 9}
//add new monsters here
};
public void Fight(Monster monster)
{
bool lastAttackerWasPlayer = false;
Random r = new Random();
while (monster.health > 0 && playerHealth > 0)
{
if (lastAttackerWasPlayer)
{
int damage = (monster.baseDamage * r.Next(1, monster.diceSides)) + monster.damageBonus;
if (r.Next(0, 100) < 70)
{
playerHealth -= damage;
Console.WriteLine(monster.Name + " hits you and gives " + damage.ToString() + " damage.");
}
else //missed
{
Console.WriteLine(monster.Name + " missed to hit you.");
}
lastAttackerWasPlayer = false;
}
else
{
int damage = (baseDamage * r.Next(1, diceSides)) + damageBonus;
if (r.Next(0, 100) < 70)
{
monster.health -= damage;
Console.WriteLine("You hit " + monster.Name + " and give " + damage.ToString() + " damage.");
}
else //missed
{
Console.WriteLine("You missed to hit.");
}
lastAttackerWasPlayer = true;
}
if (playerHealth <= 0)
{
Console.WriteLine("You died.");
Console.ReadKey();
return;
}
if (monster.health <= 0)
{
Console.WriteLine("You killed " + monster.Name + "! (Experience +" + monster.givenExperience.ToString() + ")");
playerExperience += monster.givenExperience;
if(playerExperience >= experienceToNextLevel)
{
playerLevel++;
Console.WriteLine("You advanced to level " + playerLevel.ToString());
}
}
Console.ReadKey();
}
}
public int playerHealth { get; set; }
public int playerMaxHealth { get; set; }
public int playerLevel { get; set; }
public int playerExperience { get; set; }
public int experienceToNextLevel { get { return 8 * (playerLevel + 1) * (playerLevel + 1) - 8 * (playerLevel + 1); } set { value = 0; } }
public int baseDamage { get; set; }
public int diceSides { get; set; }
public int damageBonus { get; set; }
}
class Program
{
static void Main(string[] args)
{
Game game = new Game();
game.baseDamage = 2;
game.diceSides = 3;
game.damageBonus = 0;
game.playerExperience = 5;
game.playerHealth = 30;
game.playerLevel = 1;
game.playerMaxHealth = 30;
Random r = new Random();
string choice = "y";
while (choice == "" || choice[0] != 'n')
{
if(game.playerHealth <= 0)
{
Console.WriteLine("You fight great but you died.");
Console.ReadKey();
return;
}
Console.WriteLine("Do You want to go deeper in the dungeon? (y/n)");
choice = Console.ReadLine();
if (choice == "")
continue;
if (choice[0] == 'y')
{
Monster monster = game.availableMonsters[r.Next(0, game.availableMonsters.Count)];
Console.WriteLine("You meet " + monster.Name + "!");
game.Fight(monster.Clone());
Console.WriteLine("Your statistics:");
Console.WriteLine("Health: " + game.playerHealth.ToString() + "/" + game.playerMaxHealth.ToString());
Console.WriteLine("Damage: " + game.baseDamage.ToString() + "d" + game.diceSides.ToString() + "+" + game.damageBonus.ToString());
Console.WriteLine("Experience: " + game.playerExperience.ToString() + "/" + game.experienceToNextLevel.ToString());
Console.WriteLine("Level: " + game.playerLevel.ToString());
if(r.Next(0, 100) < 40)
{
Console.WriteLine("You found a Health Potion!");
game.playerHealth = game.playerMaxHealth;
}
}
}
}
}
}
/* http://psychotic.pl/ */
- Rejestracja: dni
- Ostatnio: dni
Console.WriteLine("Health: " + game.playerHealth.ToString() + "/" + game.playerMaxHealth.ToString());
Czytelniej tak:
Console.WriteLine("Health: {0}/{1}", game.playerHealth, game.playerMaxHealth);
- Rejestracja: dni
- Ostatnio: dni
- Postów: 268
Aaa okej takie coś to robiliśmy na lekcjach kiedyś na zaliczenie, że ma się niby postać, walka jakaś losowa itd i poprawia się statystyki albo zmniejsza jak się przegra :)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Hong Kong
@Bartolinho10 cos mi sie wydaje ze ty nie chcesz nic zrobic tylko pogadac o tym co moglbys. wez sie lepiej do roboty bo ci wakacje mina
- Rejestracja: dni
- Ostatnio: dni
- Postów: 268
Najpierw trzeba zaplanować co zrobić.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 4883
pytales sie mnie o projekt a nie odezwales sie po wiecej detali ;)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Krasnystaw
- Postów: 1185
Te 2 miesiące wakacji to stanowczo za mało żeby można było stworzyć jakąś sensowną aplikację desktopową w C++ jak się robi tylko proste konsolowe projekty. Generalnie mógłbym polecić może tego C++ Buildera albo MS Visual Studio i są to w zasadzie chyba jedyne sensowne narzędzia. Z QT mogą być problemy pod GCC, bo próbowałem coś zrobić w CodeBlocks pod MinGW, i QT 4.3.5, co prawda się skompilowało jednak wyskakuje jakiś błąd związany z brakiem zainstalowanego JIT debugera Visual Studio. Z NetBeans 8 jest nie lepiej, nawet nie chce się zlinkować do EXE, bo G++ nie ma jakiejś tam opcji w linii poleceń. Same problemy.
Nie wiem na podstawie czego wybierany jest do nauki ten C++ i nie sądzę żeby to był jakiś racjonalny wybór. Gry można równie dobrze pisać i w pascalu a FreePascal jest zresztą bardzo szybki. C++ jest jednym z najtrudniejszych języków programowania a już operowanie na jakichś tam open sourcowych narzędziach i GCC to już prawdziwa porażka.
Zamiast tego polecam C# bo jest znacznie prostszy do opanowania a można w nim zrobić naprawdę wiele. No ale jak ktoś chce się babrać w C++ to droga wolna.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 268
Umiem coś w C++, C# nie znam w ogóle. Mam w planach nauczyć się podstaw C# i Javy, i później wybrać co najlepiej mi odpowiada.
Dopóki co, chciałem stworzyć coś poważniejszego bo znudziło mi się robić ciągle proste konsolówki.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 4883
@drorat1
C++ Builder... no tak nie ma to jak polecac cos w czym sie pisalo jakies 10 lat temu...
Visual studio w C++? Mowisz o CLI? Przeciez tego praktycznie sie nie uzywa... Duzo lepiej zaczac pisac w C#
qt jest bardzo dobrym wyborem jezeli chodzi o bibloteke graficzna do C++
Tez mozna napisac w wxWidgetds
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Krasnystaw
- Postów: 1185
Bartolinho10 napisał(a):
Umiem coś w C++, C# nie znam w ogóle. Mam w planach nauczyć się podstaw C# i Javy, i później wybrać co najlepiej mi odpowiada.
Dopóki co, chciałem stworzyć coś poważniejszego bo znudziło mi się robić ciągle proste konsolówki.
Masz tu jakiś tutorial dla początkujących w C#
http://www.homeandlearn.co.uk/csharp/csharp.html
W Google znajdziesz zresztą wiele przykładów.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Krasnystaw
- Postów: 1185
Jak mam rozumieć rozsiana po całym internecie pomoc to ma być jedyne słuszne rozwiązanie problemów dla tych wszystkich technologii i narzędzi open source? Co do wxWidgets, w zasadzie można by zainstalować sobie wxDEV C++, v. 7.4.2 full, niestety po instalacji tego okazało się, że były jakieś bugi, aplikacja się potrafiła i zamknąć po jakimś komunikacie o błędzie. Oczywiście można sobie szukać rozwiązania problemu na Stacku czy innych forach, jeśli tylko ma się na to ochotę.
Niestety wydaje mi się że to nie składnia samego C++ i te magiczne gwiazdki są aż tak istotnym problemem tylko konfiguracja i poprawna instalacja tych wszystkich dostępnych i potrzebnych bibliotek i narzędzi a jeszcze większy problem jest wtedy, gdy się okazuje że coś się gdzieś tam na czymś wywala i albo trzeba szukać błędów, albo instalować inne wersje, albo szukać pomocy na forach, gdzie nie zawsze porady są skuteczne. No chyba że ktoś ma duże doświadczenie, to sobie jeszcze poradzi.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 268
Co do zapotrzebowania na rynku pracy w jaki język proponujecie uderzyć? C++ chyba zostaje trochę wyparte?