Compi Opublikowano 6 Października 2011 Udostępnij Opublikowano 6 Października 2011 Opis: S-TRIP to egzotyczny (dla innojęzykowców) język programowania. Póki co służy mojej klasie za cheat w odrabianiu lekcji z programowania, gdyż ma wbudowany translator na język Pascal. Implementacja załączona w pliku. Tworzy normalnie pliki exe. Jednak działa tylko prawidłowo pod Win XP.Na Win 7 nie kompiluje :( Mam nadzieję, że nadejdzie jakiś Feedback z waszej strony, ponieważ chcę go rozwijać. (Hasło do archiwum to zse2011) Download:Runtime LibraryUPDATE 1.2.0.1a STABLE (Używać z wersją 1.1.3)-Obsługa polskich znaków w plikach EXE -Operator := został zamieniony na -> -Dodano zmienną globalną #DATA#, która przechowuje informacje o dacie kompilacji Waga:251KBAutorzy: Daniel MazurScreeny:Known Bugs 1.Nawet gdy kod jest prawidłowy, podczas kompilacji może pojawić się błąd. Spróbujcie dać kilkakrotnie 'Kompiluj'. 2.Czasami w łańcuchach znaków może się zmienić tekst więc nie polecam korzystania z nich, lub pisanie tylko znakami alfanumerycznymi (bez polskich dialektów) lub małymi. Jest problem związany z dodanym prze zemnie (How to write this?) translatorem na pascala. 3.W okienku z implementacją mogą wystąpić stare komendy. Kolejny Bug-fix w wersji 1.2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bedziom Opublikowano 6 Października 2011 Udostępnij Opublikowano 6 Października 2011 Pamiętam program z wersji demo, podobał mi się. Tu przy uruchomieniu jest error :( Jeśli mi zadziała to na pewno się przyda :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Shockah Opublikowano 6 Października 2011 Udostępnij Opublikowano 6 Października 2011 Nie przesadzasz trochę? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomekk1410 Opublikowano 7 Października 2011 Udostępnij Opublikowano 7 Października 2011 U mnie też jest ten error. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 7 Października 2011 Autor Udostępnij Opublikowano 7 Października 2011 U mnie też jest ten error. Może spróbuj ściągnąć ten plik i wrzuć do folderu z S-TRIPem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomekk1410 Opublikowano 7 Października 2011 Udostępnij Opublikowano 7 Października 2011 Żeby program zadziałał musiałem wrzucić do folderu pliki rtl70.bpl i vcl70.bpl EDIT: Fajny kompilator podoba mi się rozwijaj to dalej ! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 7 Października 2011 Autor Udostępnij Opublikowano 7 Października 2011 https://gmclan.org/up3899_4_patch.html Wrzucić do folderu ze S-TRIPEM @EDIT: Known Bugs 1.Nawet gdy kod jest prawidłowy, podczas kompilacji może pojawić się błąd. Spróbujcie dać kilkakrotnie 'Kompiluj'. 2.Czasami w łańcuchach znaków może się zmienić tekst więc nie polecam korzystania z nich, lub pisanie tylko znakami alfanumerycznymi (bez polskich dialektów) lub małymi. Jest problem związany z dodanym prze zemnie (How to write this?) translatorem na pascala. 3.W okienku z implementacją mogą wystąpić stare komendy. Kolejny Bug-fix w wersji 1.2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 7 Października 2011 Autor Udostępnij Opublikowano 7 Października 2011 UPDATE 1.2.0.1a STABLE -Obsługa polskich znaków w plikach EXE -Operator := został zamieniony na -> -Dodano zmienną globalną #DATA#, która przechowuje informacje o dacie kompilacji Sito Eratostenesa: GML #S-TRIP# liczba,n:#LICZBA; t:#TABLICA[1..500] >> #BAJT; /*Zmienne z Sita */ #START# PISZ('Witaj świecie!'); PAUZA; strip->0; PISZ('Program powstał w S-TRIP'); PISZ(#DATA#); DLA n->1 DO 500 RÓB t[n]->0; DLA liczba->2 DO ZAOKRĄGL(sqrt(500)) RÓB JEŻELI t[liczba]=0 WTEDY DLA n->2 DO 500 DIV liczba RÓB t[liczba*n]->1; DLA n->2 DO 500 RÓB #JEŻELI t[n]=0 WTEDY PISZ(n); #STOP# Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 22 Stycznia 2012 Autor Udostępnij Opublikowano 22 Stycznia 2012 Obsługa OpenGL dodana! Z wersją 2.0 zostanie dodane IDE + obsługa WinAPI i OpenGL. Na razie pracuję nad minimalizacją kodu, tak, aby funckję były jak GMLu. Zastanawiam się jeszcze nad możliwością sprzedawania tego programu, oczywiście w późniejszych wersjach. Kod na wyrenderowanie białego kwadrata w S-TRIPIE: GML #OPENGL# STAŁA #%%ext%%#WND_TITLE = 'S-TRIP OpenGL'; #%%ext%%#FPS_TIMER = 1; #%%ext%%#FPS_INTERVAL = 1000; ZMIENNE #%%ext%%#h_Wnd : HWND; #%%ext%%#h_DC : HDC; #%%ext%%#h_RC : HGLRC; keys : #TABLICA[0..255] >> #LOGICZNA; FPSCount : #LICZBA = 0; ElapsedTime : #LICZBA; FUNKCJA_EXT IntToStr(Num : #LICZBA) : #ZNAKI; { Str(Num, ZWRÓĆ); }; FUNKCJA glDraw(); { glClearColor(0.0, 0.0, 0.0, 0.0); glLoadIdentity(); glClear(GL_COLOR_BUFFER_BIT); glTranslatef(0.0,0.0,-3.0); glColor3f(1.0, 1.0, 1.0); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); gl{(GL_POLYGON); glVertex2f(-0.5, -0.5); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glEnd(); }; FUNKCJA glInit(); { glClearColor(0.0, 0.0, 0.0, 0.0); }; FUNKCJA glResizeWnd(Width, Height : #LICZBA); { JEŻELI (Height = 0) WTEDY Height -> 1; glViewport(0, 0, Width, Height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0, Width/Height, 1.0, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }; FUNKCJA ProcessKeys; { }; FUNKCJA_EXT WndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LZWRÓĆ; stdcall; { PRZYPADEK (Msg) >> WM_CREATE: { }; WM_CLOSE: { PostQuitMessage(0); ZWRÓĆ -> 0 }; WM_KEYDOWN: { keys[wParam] -> PRAWDA; ZWRÓĆ -> 0; }; WM_KEYUP: { keys[wParam] -> FAŁSZ; ZWRÓĆ -> 0; }; WM_SIZE: { glResizeWnd(LOWORD(lParam),HIWORD(lParam)); ZWRÓĆ -> 0; }; WM_TIMER : { JEŻELI wParam = FPS_TIMER WTEDY { FPSCount ->Round(FPSCount * 1000/FPS_INTERVAL); SetwindowText(h_Wnd, PChar(WND_TITLE + ' [' + intToStr(FPSCount) + ' FPS]')); FPSCount -> 0; ZWRÓĆ -> 0; }; }; ALBO ZWRÓĆ -> DefwindowProc(hWnd, Msg, wParam, lParam); }; }; FUNKCJA glKillWnd(Fullscreen : #LOGICZNA); { JEŻELI Fullscreen WTEDY { ChangeDisplaySettings(devmode(nil^), 0); ShowCursor(PRAWDA); }; JEŻELI (NIE wglMakeCurrent(h_DC, 0)) WTEDY MessageBox(0, 'Release of DC and RC failed!', 'Error', MB_OK LUB MB_ICONERROR); JEŻELI (NIE wglDeleteContext(h_RC)) WTEDY { MessageBox(0, 'Release of rendering context failed!', 'Error', MB_OK LUB MB_ICONERROR); h_RC -> 0; }; JEŻELI ((h_DC > 0) and (ReleaseDC(h_Wnd, h_DC) = 0)) WTEDY { MessageBox(0, 'Release >> device context failed!', 'Error', MB_OK LUB MB_ICONERROR); h_DC -> 0; }; JEŻELI ((h_Wnd <> 0) and (NIE Destroywindow(h_Wnd))) WTEDY { MessageBox(0, 'Unable to destroy window!', 'Error', MB_OK LUB MB_ICONERROR); h_Wnd -> 0; }; JEŻELI (NIE UnRegisterClass('OpenGL', hInstance)) WTEDY { MessageBox(0, 'Unable to unregister window class!', 'Error', MB_OK LUB MB_ICONERROR); hInstance -> 0; }; }; FUNKCJA_EXT glCreateWnd(Width, Height : #LICZBA; Fullscreen : #LOGICZNA; PixelDepth : #LICZBA) : #LOGICZNA; ZMIENNE wndClass : TWndClass; dwStyle : ##dword##; dwExStyle : ##dword##; dmScreenSettings : DEVMODE; PixelFormat : GLuint; h_Instance : HINST; pfd : TPIXELFORMATDESCRIPTOR; { h_Instance -> GetModuleHandle(nil); ZeroMemory(@wndClass, SizeOf(wndClass)); RAZEM Z wndClass RÓB { style -> CS_HREDRAW LUB CS_VREDRAW LUB CS_OWNDC; lpfnWndProc -> @WndProc; hInstance -> h_Instance; hCursor -> LoadCursor(0, IDC_ARROW); lpszClassName -> 'OpenGL'; }; JEŻELI (RegisterClass(wndClass) = 0) WTEDY { MessageBox(0, 'Failed to register the window class!', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; JEŻELI Fullscreen WTEDY { ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings)); RAZEM Z dmScreenSettings RÓB { dmSize -> SizeOf(dmScreenSettings); dmPelsWidth -> Width; dmPelsHeight -> Height; dmBitsPerPel -> PixelDepth; dmFields -> DM_PELSWIDTH LUB DM_PELSHEIGHT LUB DM_BITSPERPEL; }; JEŻELI (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) WTEDY { MessageBox(0, 'Unable to switch to fullscreen!', 'Error', MB_OK LUB MB_ICONERROR); Fullscreen -> FAŁSZ; }; }; JEŻELI (Fullscreen) WTEDY { dwStyle -> WS_POPUP LUB WS_CLIPCHILDREN LUB WS_CLIPSIBLINGS; dwExStyle -> WS_EX_APPwindow; ShowCursor(FAŁSZ); } ALBO { dwStyle -> WS_OVERLAPPEDwindow LUB WS_CLIPCHILDREN LUB WS_CLIPSIBLINGS; dwExStyle -> WS_EX_APPwindow LUB WS_EX_windowEDGE; }; h_Wnd -> CreateWindowEx(dwExStyle, 'OpenGL', WND_TITLE, dwStyle, 0, 0, Width, Height, 0, 0, h_Instance, nil); JEŻELI h_Wnd = 0 WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to create window!', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; h_DC -> GetDC(h_Wnd); JEŻELI (h_DC = 0) WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to get a device context!', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; RAZEM Z pfd RÓB { nSize -> SizeOf(TPIXELFORMATDESCRIPTOR); nVersion -> 1; dwFlags -> PFD_DRAW_TO_window LUB PFD_SUPPORT_OPENGL LUB PFD_RÓBUBLEBUFFER; iPixelType -> PFD_TYPE_RGBA; cColorBits -> PixelDepth; cRedBits -> 0; cRedShJEŻELIt -> 0; cGreenBits -> 0; cGreenShJEŻELIt -> 0; cBlueBits -> 0; cBlueShJEŻELIt -> 0; cAlphaBits -> 0; cAlphaShJEŻELIt -> 0; cAccumBits -> 0; cAccumRedBits -> 0; cAccumGreenBits -> 0; cAccumBlueBits -> 0; cAccumAlphaBits -> 0; cDepthBits -> 16; cStencilBits -> 0; cAuxBuffers -> 0; iLayerType -> PFD_MAIN_PLANE; bReserved -> 0; dwLayerMask -> 0; dwVisibleMask -> 0; dwDamageMask -> 0; }; PixelFormat -> ChoosePixelFormat(h_DC, @pfd); JEŻELI (PixelFormat = 0) WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to find a suitable pixel format', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; JEŻELI (NIE SetPixelFormat(h_DC, PixelFormat, @pfd)) WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to set the pixel format', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; h_RC -> wglCreateContext(h_DC); JEŻELI (h_RC = 0) WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to create an OpenGL r}ering context', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; JEŻELI (NIE wglMakeCurrent(h_DC, h_RC)) WTEDY { glKillWnd(Fullscreen); MessageBox(0, 'Unable to activate OpenGL rendering context', 'Error', MB_OK LUB MB_ICONERROR); ZWRÓĆ -> FAŁSZ; STOP; }; SetTimer(h_Wnd, FPS_TIMER, FPS_INTERVAL, nil); ShowWindow(h_Wnd, SW_SHOW); SetForegroundwindow(h_Wnd); SetFocus(h_Wnd); glResizeWnd(Width, Height); glInit(); ZWRÓĆ -> PRAWDA; }; FUNKCJA_EXT #$$WinAPI$$S-TRIP$$# : #LICZBA; stdcall; ZMIENNE msg : ##msg##; finished : #LOGICZNA; DemoStart, LastTime : ##dword##; { finished -> FAŁSZ; JEŻELI NIE glCreateWnd(800, 600, FAŁSZ, 32) WTEDY { ZWRÓĆ -> 0; STOP; }; DemoStart -> DAJ CZAS(); PÓKI NIE finished RÓB { JEŻELI (PeekMessage(msg, 0, 0, 0, PM_REMOVE)) WTEDY { JEŻELI (msg.message = WM_QUIT) WTEDY finished -> PRAWDA ALBO { TranslateMessage(msg); DispatchMessage(msg); }; } ALBO { Inc(FPSCount); LastTime ->ElapsedTime; ElapsedTime ->DAJ CZAS() - DemoStart; ElapsedTime ->(LastTime + ElapsedTime) DIV 2; glDraw(); SwapBuffers(h_DC); JEŻELI (keys[KL_ESC]) WTEDY finished -> PRAWDA ALBO ProcessKeys; }; }; glKillWnd(FAŁSZ); ZWRÓĆ -> msg.wParam; }; #START# #%%ext%%#WinMain( hInstance, hPrevInst, CmdLine, CmdShow ); #STOP# Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 22 Stycznia 2012 Udostępnij Opublikowano 22 Stycznia 2012 Kod na wyrenderowanie białego kwadrata w GML-u: draw_set_color(c_white) draw_rectangle(x,y,x+100,y+100,0) Daj funkcję wyboru języka (żeby zamiast "PÓKI NIE finished RÓB" było "WHILE NOT finished DO"), wbuduj w język wbudowane funkcje do rysowania i co najważniejsze - rozplanuj tak ten Twój język, żeby był co najmniej tak łatwy w użyciu, co GML. Potem możesz mówić o sprzedaży. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 23 Stycznia 2012 Autor Udostępnij Opublikowano 23 Stycznia 2012 Dodałem taki bajer: Wszystkie funkcje są wbudowane i linkowane jako lib podczas kompilacji. W edytorze można korzystać z OpenGL w taki sposób GML #S-TRIP# index1 : sprite; #OPENGL# #START# index1 -> sprite('.\gfx\spr1.gif'); #OGL RYSUJ SPRITE(index1, 1,1); OGL# #STOP# Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 23 Stycznia 2012 Udostępnij Opublikowano 23 Stycznia 2012 AD-Adware zablokował mi ten program mówiąc że to Trojan :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 23 Stycznia 2012 Autor Udostępnij Opublikowano 23 Stycznia 2012 @up Hkce wasze chasła z Tibji! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Elevator Opublikowano 23 Stycznia 2012 Udostępnij Opublikowano 23 Stycznia 2012 kurde boje sie pobierac ale widze ze podchodzisz do tego powaznie a screeny wygladaja stabilnie zachecajaco i starannie i dlatego tez dalem Ci 5 gwiazdek Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 24 Stycznia 2012 Autor Udostępnij Opublikowano 24 Stycznia 2012 Nie pobierajcie na razie, bo nie wiem skąd ten alert. Niedługo wypuszczę nową wersję, to wtedy już powinno być ok Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 6 Lutego 2012 Autor Udostępnij Opublikowano 6 Lutego 2012 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 6 Lutego 2012 Udostępnij Opublikowano 6 Lutego 2012 Mi się nie podoba, brzydka konstrukcja - nie pobrałem, ale po screenach widzę iż kod wygląda niesamowicie 'brzydko', zwłaszcza te kluski z makaronem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 6 Lutego 2012 Udostępnij Opublikowano 6 Lutego 2012 Ja podzielam zdanie Konrada-GM, nie podoba mi się. Jedyne co odkrywczego widzę w tym Twoim "języku programowania" to zamienianie na bezczelnego "ZMIENNE" na "var" etc.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 8 Lutego 2012 Autor Udostępnij Opublikowano 8 Lutego 2012 Pracuję nad tym by kodu było mało i było po polsku. I jeszcze żeby był zrozumiały dla laików Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Phoenix Opublikowano 9 Lutego 2012 Udostępnij Opublikowano 9 Lutego 2012 no to dłuuga droga przed tobą, ale trzymam kciuki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 11 Lutego 2012 Autor Udostępnij Opublikowano 11 Lutego 2012 Da rady ;) Dzięki Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się