[c++] Gotoxy probleempjes

Pagina: 1
Acties:

  • Japie.G
  • Registratie: Augustus 2001
  • Laatst online: 08:28

Japie.G

Colour Classic

Topicstarter
Okee, voor school moeten we Boter kaas en eieren maken. Ditis de code die we hebben tot nu toe
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <dos.h>

int bord_positie[10];
int speler_positie, wiegewonnen;
int teller = 0, remise =0;


int verwerk_zet(int bron);
int tekenbord();
int speelspel();
int sluitaf();
int bepaalwinnaar();
int maak_computerzet();
int lees_spelerzet();
int positie_mogelijk();
void gotoxy (int x, int y);




int main () {

    
    tekenbord();
    speelspel();
    sluitaf();

return 0;
}






int tekenbord () {

    cout << "------------------ " << endl;
    cout << "|  1  |  2  |  3  |" << endl;
    cout << "-------------------" << endl;
    cout << "|  4  |  5  |  6  |" << endl;
    cout << "-------------------" << endl;
    cout << "|  7  |  8  |  9  |" << endl;
    cout << "-------------------" << endl;

return 0;
}

int speelspel () {


    while (speler_positie != 10 && teller != 9) {

        teller += 1;

        lees_spelerzet();
        


            if (speler_positie != 10) {
                verwerk_zet(1);
                wiegewonnen =1;
                bepaalwinnaar ();

                    if (speler_positie != 10 && teller < 8) {

                        teller +=1;
                        maak_computerzet();
                        verwerk_zet(-1);
                        wiegewonnen = -1;
                        bepaalwinnaar ();
                    }
                }

    }
return 0;
}

int lees_spelerzet () {

speler_positie = 0;

    while (speler_positie == 0) {

        cout << "Voer de positie in: " << endl;
        cin >> speler_positie;

            if (speler_positie > -1 && speler_positie < 11) {
                positie_mogelijk();
            }
            else {
                speler_positie = 0;
            }
    }
return 0;
}

int positie_mogelijk () {

    if (speler_positie != 10) {
        if (bord_positie[speler_positie] != 0) {
            speler_positie = 0;
        }
    }
return 0;
}

int verwerk_zet( int bron) {

    if (bron ==1) {
        bord_positie[speler_positie] =1;
        
        gotoxy( 20 , 12 );
        cout << "X" << speler_positie << endl;
        
        
        

        
        // hier moet switch - case statement nog komen !!!
        }
    else {
        bord_positie[speler_positie] =-1;
        cout << "O" << speler_positie << endl; 
        // hier moet switch - case statement nog komen !!!
        }
return 0;
}

int maak_computerzet() {

    speler_positie = 0;

        while (speler_positie ==0) {

            srand( (unsigned)time( NULL ) );
            speler_positie = rand()%(10);  

            positie_mogelijk();
            }
return 0;
}




int bepaalwinnaar() {

    if ((bord_positie [1] == bord_positie[2] && bord_positie[1] == bord_positie[3] && bord_positie[1] != 0) || (bord_positie [1] == bord_positie[4] && bord_positie[1] == bord_positie[7] && bord_positie[1] != 0) || (bord_positie [1] == bord_positie[5] && bord_positie[1] == bord_positie[9] && bord_positie[1] != 0) || (bord_positie [7] == bord_positie[8] && bord_positie[7] == bord_positie[9] && bord_positie[7] != 0) || (bord_positie [7] == bord_positie[5] && bord_positie[7] == bord_positie[3] && bord_positie[7] != 0) || (bord_positie[4] == bord_positie[5] && bord_positie[4] == bord_positie[6] && bord_positie[4] != 0) || (bord_positie [2] == bord_positie[5] && bord_positie[2] == bord_positie[8] && bord_positie[2] != 0) || (bord_positie [3] == bord_positie[6] && bord_positie[3] == bord_positie[9] && bord_positie[3] != 0))
    {
        speler_positie = 10;
        remise =1;
    }
    
return 0;
}

int sluitaf () {

    
    if (remise == 0) {
        cout << "N.Iemand heeft gewonnen" << endl;
    }
    else {
        if (wiegewonnen == 1) {
            cout << "U heeft gewonnen" << endl;
        }
        else {
            cout << "De computer heeft gewonnen!!!" << endl;
        }
    }

    cin.get();

return 0;
}

void gotoxy (int x, int y) {
    union REGS r;
    r.h.ah = 2;
    r.h.dh = y;
    r.h.dl = x;
    r.h.bh = 0;
    int86( 0x10, &r, &r );
}

Het probleem zit hem in de gotoxy functie. Deze moet ervoor zorgen dat de x-jes en de o-tjes op de juiste plaats gezet worden. Dit werkt met de standaard functie (gewoon gotoxy(x, y)) niet in microsoft visual studio 6.0. Toen hebben we dus die laatste functie die je ziet in de code toegevoegd. Maar het werkt gewoon voor geen meter!!

check:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ompiling...
bke.cpp
C:\test\bke.cpp(183) : error C2079: 'r' uses undefined union 'REGS'
C:\test\bke.cpp(184) : error C2228: left of '.h' must have class/struct/union type
C:\test\bke.cpp(184) : error C2228: left of '.ah' must have class/struct/union type
C:\test\bke.cpp(185) : error C2228: left of '.h' must have class/struct/union type
C:\test\bke.cpp(185) : error C2228: left of '.dh' must have class/struct/union type
C:\test\bke.cpp(186) : error C2228: left of '.h' must have class/struct/union type
C:\test\bke.cpp(186) : error C2228: left of '.dl' must have class/struct/union type
C:\test\bke.cpp(187) : error C2228: left of '.h' must have class/struct/union type
C:\test\bke.cpp(187) : error C2228: left of '.bh' must have class/struct/union type
C:\test\bke.cpp(188) : error C2065: 'int86' : undeclared identifier
Error executing cl.exe.

test.exe - 10 error(s), 0 warning(s)

10 errors is nie zo fijn d8 ik zo :)

Wie kan helpen?

Renault Scenic E-Tech EV - PV-Output - 48kWh LiFePo4 op 15kVa Victron systeem


  • Japie.G
  • Registratie: Augustus 2001
  • Laatst online: 08:28

Japie.G

Colour Classic

Topicstarter
oeps een beetje breed topic geworden :+

Renault Scenic E-Tech EV - PV-Output - 48kWh LiFePo4 op 15kVa Victron systeem


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 20-09 16:35
Zoek eens de juiste header bij REGS, dan ben je al een heel eind.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-09 12:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

visual studio zei je? Ik denk niet dat DOS-interrupts dan gaan werken :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Japie.G
  • Registratie: Augustus 2001
  • Laatst online: 08:28

Japie.G

Colour Classic

Topicstarter
en als je die header niet kan vinden????? :?

Renault Scenic E-Tech EV - PV-Output - 48kWh LiFePo4 op 15kVa Victron systeem


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-09 12:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

wat zeg ik nou, interrupts werken niet onder visual C++, er zijn ook geen functies voor :z

je kunt altijd nog dit doen:
code:
1
2
3
4
5
6
7
8
__asm
{
    mov ah, 2
    mov dh, y
    mov dl, x
    xor bh, bh
    int 0x10
}

maar ik denk niet dat dat gaat werken :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Japie.G
  • Registratie: Augustus 2001
  • Laatst online: 08:28

Japie.G

Colour Classic

Topicstarter
super c++ leek ben ik he!!!

vraagje, wat zijn interrupts precies, dat stukje van die gotoxy hebben rechtstreeks uit een boek gehaald, vandaar dat ik het niet weet!

alvast bedankt

Renault Scenic E-Tech EV - PV-Output - 48kWh LiFePo4 op 15kVa Victron systeem


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 24 september 2001 13:25 schreef ShereKahn het volgende:
vraagje, wat zijn interrupts precies, dat stukje van die gotoxy hebben rechtstreeks uit een boek gehaald, vandaar dat ik het niet weet!
Een interrupt is een onderbreking. De CPU heeft een stel interruptlijnen, en zodra een van die lijnen hoog wordt (of laag afhankelijk van de bouw) laat de CPU alles liggen wat ie doet, zet de huidige PC en CPU-state op de stack en plaatst het adres van de interruptpointer van het betreffende level op de PC.

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-09 12:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

interrupt service routines zijn routines die een interrupt afvangen. Een interrupt kan op 2 manieren worden aangeroepen: door de hardware (dmv de IRQ, waar je vast wel eens van gehoord hebt), en door software (dus een interrupt instructie zoals ik die gaf in dat asm stukje).
Er zijn in totaal 255 verschillende interrupts, waarvan er 16 gebruikt worden voor de hardware

Hier gaat het dus om een software interrupt, omdat je m zelf vanuit software aanroept.

Vroeger, in het oude DOS-tijdperk, werden alle systemcalls gedaan dmv interrupts. Om bijvoorbeeld een bestand te openen en te lezen, iets op het scherm te zetten, of de cursor verplaatsen zoals jij dat wilt.
Je zet dan de nodige parameters in de registers van de cpu, en je roept de interrupt service routine aan die vervolgens wat met de data in de registers doet.

In de windows omgeving worden software interrupts nauwelijks nog gebruikt, alles gaat mbv DLL calls

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-09 12:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 24 september 2001 13:34 schreef curry684 het volgende:

[..]

Een interrupt is een onderbreking. De CPU heeft een stel interruptlijnen, en zodra een van die lijnen hoog wordt (of laag afhankelijk van de bouw) laat de CPU alles liggen wat ie doet, zet de huidige PC en CPU-state op de stack en plaatst het adres van de interruptpointer van het betreffende level op de PC.
da's dus een hardware interrupt, daar heeft ie veel aan ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

En om de vraag ook maar even te beantwoorden:
code:
1
2
3
4
5
void gotoxy (int x, int y)
{
COORD   l_Point = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), l_Point);
}

Wel even windows.h includen :)

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op maandag 24 september 2001 13:35 schreef OiSyN het volgende:
da's dus een hardware interrupt, daar heeft ie veel aan ;)
Ach zijn de enige waar ik iets van weet... :)

Lang geleden zat ik op de Amiga waar dit soort troep met de execlibrary ging, en nog daarvoor op de C-64 ging het met kernelcalls (jsr $ffe8 was GetChar geloof ik). Toen ik op de PC ging programmeren bestonden DLL's al een tijdje 8-)

* curry684 is van het Windows 95 tijdperk.

Professionele website nodig?


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-09 12:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

haha, miet, DOS über allesch :7 :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Op maandag 24 september 2001 13:48 schreef OiSyN het volgende:
haha, miet, DOS über allesch :7 :P
Juistem; DOS is tenminste snel... :9

* Korben weet dat ie een gewaagde uitspraak doet...

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op dinsdag 25 september 2001 09:20 schreef Xenophage het volgende:
Juistem; DOS is tenminste snel... :9
AmigaDOS wel ja.

8-)

Professionele website nodig?

Pagina: 1