Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Podobne dokumenty
Podstawy programowania, Poniedziałek , 8-10 Projekt, część 3

Budowa i generowanie planszy

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania.

2 Przygotował: mgr inż. Maciej Lasota

Podstawy Programowania

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

INSTRUKCJE REPETYCYJNE PĘTLE

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Projekty zaliczeniowe Podstawy Programowania 2012/2013

Programowanie w językach wysokiego poziomu

Podstawy Programowania C++

1 Podstawy c++ w pigułce.

lekcja 8a Gry komputerowe MasterMind

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Co nie powinno być umieszczane w plikach nagłówkowych:

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

/*W tym miejscu funkcja system wywołuje systemową komendę PAUSE tj.czeka tak długo, aż zostanie wciśnięty dowolny znak z

Część 4 życie programu

Programowanie komputerowe. Zajęcia 4

Argumenty wywołania programu, operacje na plikach

1 Podstawy c++ w pigułce.

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Wskaźniki w C. Anna Gogolińska

Informatyka I : Tworzenie projektu

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Wstęp do programowania

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Program 14. #include <iostream> #include <ctime> using namespace std;

Podstawy Programowania (PRM) projekt Specyfikacja strukturalna (techniczna)

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Język C++ zajęcia nr 2

Programowanie komputerowe. Zajęcia 1

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

W powyższym kodzie utworzono wyliczenie dni tygodnia.

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Programowanie w językach

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

tablica: dane_liczbowe

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Programowanie strukturalne i obiektowe

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język C zajęcia nr 5

1. Opis okna podstawowego programu TPrezenter.

Wprowadzenie do języka Java

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

Robo - instrukcja obsługi

I - Microsoft Visual Studio C++

void Pobierz(Student &a); void Wypisz(Student a); void Ustaw_zaliczenia(Student t[],int r); void Wypisz_najlepszych(Student t[],int r, float prog);

Arkusz strona zawierająca informacje. Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze.

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Pliki. Informacje ogólne. Obsługa plików w języku C

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Zadanie nr 3: Sprawdzanie testu z arytmetyki

INSTRUKCJE REPETYCYJNE PĘTLE

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Programowanie w języku Python. Grażyna Koba

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Podstawy pracy z edytorem tekstu. na przykładzie Open Office

Obliczenie pola wieloboku na podstawie współrzędnych wierzchołków

Instrukcja do ćwiczeń

Podstawy programowania C. dr. Krystyna Łapin

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Pong to dwuwymiarowy symulator tenisa sportowego. Gracz, poruszając prostokątem symulującym paletkę, stara się zdobyć punkt poprzez posłanie piłki

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Zakład Systemów Rozproszonych

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Klawisze funkcyjne w OpenOffice.org Writer

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Materiały do zajęć III

UMOWY INSTRUKCJA STANOWISKOWA

Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie - wykład 4

KURS C/C++ WYKŁAD 1. Pierwszy program

Simba 3D LOGO. Cele zajęć: - Poznanie zasad i sposobów tworzenia procedur z parametrami. - Poznanie zasad wywoływania procedur z parametrami.

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym

Wprowadzenie do programowania w języku C

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Tworzenie prezentacji w MS PowerPoint

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

Programowanie komputerowe. Zajęcia 7

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Część XV C++ Ćwiczenie 1

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Transkrypt:

Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem projektu jest napisanie bardziej rozbudowanego programu niż było to możliwe na pojedynczych zajęciach i przećwiczenie wcześniej nauczonych mechanizmów języka C. Ponieważ jest to projekt, wymagana jest również własna kreatywność oraz inwencja nie wszystko w treści zadania będzie napisane krok po kroku jak to zrobić. Uwaga! Zalecane jest szerokie stosowanie zewnętrznych funkcji w dobrym projekcie funkcja main powinna być jak najkrótsza. 3. Menu główne Od razu po uruchomieniu program powinien wyświetlić menu główne, w którym znajdować się będzie opis możliwych do wyboru opcji. Menu główne powinno wyglądać mniej więcej tak: Menu działa w nieskończonej pętli, której przerwanie i wyjście z programu następuje po wpisaniu opcji 0. Wybór każdej z opcji jest dokonywany poprzez instrukcję switch-case.

2. Informacja o autorze Wybranie opcji 2 powinno wyświetlić na ekranie informację o autorze a następnie wrócić do menu głównego: 3. Plansza Główną częścią pierwszych zajęć projektowych jest stworzenie planszy, w której poruszał się będzie saper. Saper powinien mieć możliwość poruszania się przy pomocy klawiszy W, S, A, oraz D. Powinien on być oznaczony na planszy za pomocą literki o. Przykładowa plansza przedstawiona jest na poniższym rysunku:

Szczegóły implementacji Głównym zadaniem jest implementacja funkcji void NowaGra(), która jest wywoływana po wybraniu w menu opcji 1. W funkcji tej tworzymy planszę planszę oraz dodajemy ruch sapera. 1) Stworzenie sapera: Tworzymy strukturę Punkt, która zawiera dwa pola (jak łatwo się domyślić, przechowujące dwuwymiarowe współrzędne położenia sapera): int x; int y; Do jej obsługi wystarczy jedna fukcja: void UstawPunkt(Punkt *p, int X, int Y) Struktura ma swoje pliki.h i.c. W funkcji void NowaGra() tworzymy obiekty typu Punkt ustawiając mu pozycję startową sapera (odpowiednie współrzędne odpowiadające lewemu dolnemu rogowi planszy) 2) Narysowanie planszy: Rozwijamy funkcję void NowaGra(). Planszę można zaimplementować następująco: - zakładamy stały rozmiar planszy (w naszym przypadku 40) ponieważ tę wartość będziemy wykorzystywać często, można po prostu zdefiniować stałą globalną, czyli od razu pod include'ami wstawiamy: #define PLANSZA 40 - tak zdefiniowaną stałą możemy używać już dowolnie w całym pliku, np.: for(int i=0;i<plansza;i++) - wykona 40 iteracji - rysujemy planszę - przedstawiona powyżej plansza jest wynikiem zastosowania odpowiedniej kombinacji funkcji printf umieszczonych wewnątrz dwóch zagnieżdżonych pętli for. Dla każdego punktu (x,y) planszy (każdej iteracji) musimy sprawdzić, czy odpowiada on współrzędnym położenia sapera. Jeśli dany punkt planszy nie odpowiada położeniu sapera, wypisujemy na ekran spację, jeśli zaś odpowiada, to wypisujemy o w danym punkcie najprościej wszystko to zaimplementować w zewnętrznej funkcję void plansza(punkt *s), która rysuje ramkę z pozycją sapera. Funkcję tę wywołujemy wewnątrz funkcji void NowaGra() 3) Ruch sapera: Ruch sapera polega na zmianie położeń (czyli wartości x oraz y) sapera s (obiektu typu Punkt) oraz przerysowywaniu planszy po każdej takiej zmianie. W tym celu należy w funkcji void NowaGra() zaimplementować nieskończoną pętlę while, w której każda zmiana pozycji będzie powodować czyszczenie ekranu terminala (komenda system("clear") patrz Uwaga poniżej i zajęcia 10) oraz ponowne narysowanie planszy poprzez wywołanie funkcji void plansza(punkt *s). Jedyną niewiadomą pozostaje zmiana pozycji sapera jak to zrobić? Do tego celu należy wykorzystać funkcję char getch() z pliku getchar.h (jest to podobna funkcja do scanf, z tą różnicą, że nie wymaga potwierdzenia wprowadzenia znaku poprzez wciśnięcie klawisza Enter). Przykład wykorzystania funkcji char getch() - wczytanie pojedynczego znaku z klawiatury i jego wypisanie na ekran: #include <stdio.h> #include "getchar.h" int main(void) { char znak; znak = getch(); printf("podany znak to: %c\n",znak);

return 1; } W przypadku ruchu sapera, wciśnięcie klawiszy: w - przesuwa sapera o 1 w górę (czyli wartość y położenia sapera zmniejsza się o 1) s - przesuwa sapera o 1 w dół (czyli wartość y położenia sapera zwiększa się o 1) a - przesuwa sapera o 1 w lewo (czyli wartość x położenia sapera zmniejsza się o 1) d - przesuwa sapera o 1 w prawo (czyli wartość x położenia sapera zwiększa się o 1) 0 - wychodzi z gry (przerywa pętlę przerysowującą planszę) i wraca do menu głównego Uwaga! Bardzo użyteczna komenda: system("clear"); z biblioteki stdlib.h na systemach UNIX'owych czyści całe okno terminala: umożliwia to np. zastępowanie jednego menu innym. Punktacja: 1. Stworzenie menu głównego (1 p.) 2. Obsłużenie opcji wyjścia i informacji o autorze (1 p.) 3. Obsłużenie opcji Nowa gra wraz ze stworzeniem struktury Punkt i narysowaniem planszy (6 p.) Całość kompilujemy w linii poleceń używając pliku Makefile oraz polecenia make. (1 p.) Zrozumienie, analiza treści, projekt programu + poprawność i estetyka kodu. (1 p.) Dodatkowo tworzymy ścieżkę bezpieczeństwa - czyli oznaczamy pola w planszy, które odwiedził saper. Jak to zrobić? - musimy zapamiętywać wszystkie poprzednie ustawienia sapera w kolejnym ruchu - tworzymy globalną (od razu pod include ami ) tablicę 2D planszę naszej gry, np. w następujący sposób (zakładamy rozmiar 40x40): #define PLANSZA 40 bool tablica[plansza][plansza]; - w funkcji void NowaGra() (przed albo po stworzeniu sapera) ustawiamy wszystkie jej pola na false - dla pozycji sapera zmieniamy w tablicy dla danego położenia false na true, czyli jeśli będziemy się przesuwać po planszy, to kolejne pola będą zmieniane na true. W każdym przerysowaniu planszy sprawdzamy tablicę i jeżeli dla danego (x,y) jest tam true, zamiast spacji wstawiamy znak #