|
Okay. So wouldn't that mean you have a card with the back image and when you want it to flip you show the front image?
|
|
|
|
|
The card with the back image is from the loadpicture("aaaa.gif")
but the original picture bitmap formed in design view is the suit card.
|
|
|
|
|
You'd have to draw each frame the animation yourself. That's all it is. A series of still images that give the illusion of flipping a card.
|
|
|
|
|
Trying to understand completely what you are saying:
Basically, I have random cards of all suits on the left of the form. Each other card has a back.gif to show the back of the card. Each card is in an array of 52 cards. When a user clicks the backing card, I want the let's say queen of hearts to show up, hence image1(12), that picture; before they drag the card.
I tried this with If image1(index).picture = loadpicture("C:\backing.gif") Then
image1(12).picture = loadpicture("C:\queenhearts.gif")
and so forth; I would write all the images and set them to the correct gifs. At runtime, nothing worked when I clicked those cards....
I even thought of trying image1_click(Index As Integer), but that didn't work either.
Any ideas on how to within the same routine, to turn the cards or set them to the proper gif when the user clicks on them? Seems so simple, but I'm still confused.
|
|
|
|
|
In a card game I would keep all cards in memory, rather than reading them from disk every time.
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
and pardon my less knowledge, but how would you do this?
|
|
|
|
|
Start a collection of images (array, List, Dictionary, ...) and load it using Image.FromStream at the start of the app.
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
I already have an array of images in design view; it would be redundant to load them, wouldn't it?
|
|
|
|
|
I don't know as I am not familiar with your entire code base.
However it does not match well with the code shown in your original post.
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
You're right; I changed some of the code. I'm thinking that on mousedown event, somewhere I would flip the backing cards over when the user presses the mouse down on the card. How would I do that?
Here it is:
Option Explicit
Public Sub FormLoad()
End Sub
Private Sub Exit_Click()
MsgBox ("Thank you for playing. Good Bye.")
End
End Sub
Private Sub Start_Click()
Image2.Visible = False
Dim Selected As Boolean
Dim arrDeck(52)
Dim Cardcount As Integer
Dim Counter As Integer
Dim Index As Integer
Do While Cardcount <= 52
arrDeck(Cardcount) = Cardcount
Cardcount = Cardcount + 1
Loop
Dim swap As Integer
Dim posn1 As Integer
Dim posn2 As Integer
Randomize
For swap = 0 To 50
' Get two random positions
posn1 = Int(52 * Rnd)
posn2 = Int(52 * Rnd)
' Swap pictures at these positions
If (posn1 <> posn2) Then
KingH(0).Picture = Image1(posn1).Picture
KingH(0).Tag = Image1(posn1).Tag
Image1(posn1).Picture = Image1(posn2).Picture
Image1(posn1).Tag = Image1(posn2).Tag
Image1(posn2).Picture = KingH(0).Picture
Image1(posn2).Tag = KingH(0).Tag
End If
Next swap
Start_Game.Refresh
For Counter = 0 To 50
Counter = Counter + 1
Image1(Counter).Picture = LoadPicture("C:\Program1\Back.gif")
Next Counter
Counter = 0
For Counter = 0 To 51
Image1(Counter).Visible = True
Next Counter
End Sub
Private Sub Image1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Image1(Index).Drag vbBeginDrag
End Sub
Private Sub Hearts_DragDrop(Index As Integer, Source As Control, X As Single, Y As Single)
If Hearts(Index).Tag = Source.Tag Then
Hearts(Index).Picture = Source.Picture
Source.Picture = Image1(Index).Picture
Source.Visible = False
Source.Drag vbEndDrag
MsgBox ("OK")
Else
Image1(Index).Picture = Image1(Index).Picture
Source.Drag vbCancel
MsgBox ("No Way Shirley")
End If
End Sub
|
|
|
|
|
Hi,
I have several comments:
1.
For Counter = 0 To 50
Counter = Counter + 1
Image1(Counter).Picture = LoadPicture("C:\Program1\Back.gif")
Next Counter
you are incrementing Counter twice: once explicitly, once implicitly in the For statement.
If that is what you want, you should adapt the for statement and add "Step 2" for clarity.
And you are loading that image from file over and over.
2.
I would keep the state of the game in my own data structures, independent of the GUI; I might choose to have an integer array storing the card numbers (0-51), a bool array storing a front/back flag, etc. Then perform the game rules on that data, and when something changes update the GUI.
So e.g. the initial card shuffle would occur in data arrays, not in PictureBoxes.
3.
I would keep all the card images in a single Image array, and load that once at app start. You seem to get all cards loaded in the PictureBoxes through the Designer (that is a lot of unnecessary work, such things are much easier in code).
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
Thanks for the expert comments:
Questions:
1. I would like to keep what I have done in design view instead of writing more code to load those pics. I have Dimmed an array at the beginning to create the card deck; I cannot redundantly load the image array twice; the compiler won't let me; says it's already there.
2. In response to your #1, I wanted every other card to have the back.gif, so in essence it is flipped over. Am I actually loading the same image twice with my code? I thought using the For statement would at least start the counting from 0-51, but I wanted the counter to change the back of every other card. Your comment about boolean flags makes sense. I'm not asking you to write my code, but this isn't for a school assignment; it is a birthday present to my Mom, so help on boolean code would be very much appreciated. Hence, perhaps I can have a face up as a boolean, and a face down. How and where would I implement that; at loadform?
Much appreciation in advance.
|
|
|
|
|
I don't understand your game nor your code, however I am convinced I would program card games quite differently, as I explained. Obviously you are entitled to your way of doing it, I won't be able to help you much, I wish you success.
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
Thanks, but it works so far....maybe I did too much in design view.
|
|
|
|
|
Hi,
I have a comma delimited text file. Below that
IM,ABC001,D,0,@;ABC;Images\00\00\ABC001.tif;2
IM,ABC002,,0,@;ABC;Images\00\00\ABC002.tif;2
IM,ABC003,D,0,@;ABC;Images\00\00\ABC003.tif;2
IM,ABC004,D,0,@;ABC;Images\00\00\ABC004.tif;2
I need the output as below.(In another Notepad)
"ABC001","ABC002"
"ABC003","ABC003"
"ABC004","ABC004"
It is read based on the ,D, in the input notepad. After read the ,D, we will pick the "ABC001" from after "IM". then again read the 'D' then we pick the "ABC002" from previous line. Are you not understand please see the input and output.
Please help me..
By
Gopi A.
Please help
|
|
|
|
|
Where are you stuck? What have you tried?
Seems straightforward and relatively easy.
|
|
|
|
|
They are called "text files", not "Notepads". Notepad is an application that edits text files.
Why is this so hard? It's simple string manipulation. Read the line into a String variable, split it on the "," character, then look at the 2nd element to get your name. Then look at the thrid element. If it's got a "D", then you output your name appropriately.
|
|
|
|
|
Hi Dave,
I am using this code.
My input is in notepad like below
Input:
IM,ABC001,D,0,@Box1;Images\00\00\ABC001.tif;2
IM,ABC002,,0,@Box1;Images\00\00\ABC002.tif;2
IM,ABC003,D,0,@Box1;Images\00\00\ABC003.tif;2
IM,ABC004,D,0,@Box1;Images\00\00\ABC004.tif;2
IM,ABC005,,0,@Box1;Images\00\00\ABC005.tif;2
IM,ABC006,D,0,@Box1;Images\00\00\ABC006.tif;2
output:
BegBate EndBate
ABC001 ABC002
ABC003 ABC003
ABC004 ABC005
ABC006 ABC006
After use the below code i was got only the BegBate. How I will got the Endbate also like above format?.
MY Code:
Using myreader As New Microsoft.VisualBasic.FileIO.TextFieldParser("c:\ipro.txt")
myreader.TextFieldType = FileIO.FieldType.Delimited
myreader.SetDelimiters(",")
'cr=currentrow
'cf=currentfield
Dim cr As String()
Dim count1 As Integer
While Not myreader.EndOfData
Try
cr = myreader.ReadFields()
For count1 = 4 To cr.Length - 1
If cr(2).Contains("D") Or cr(2).Contains("C") = True Then
Dim sw As StreamWriter
sw = New StreamWriter("c:\test2.txt", True, Encoding.Unicode)
sw.WriteLine(cr(1))
sw.Close()
End If
Next
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("Line " & ex.Message & "is not valid and will be skipped.")
End Try
End While
End Using
MsgBox("completed")
Please do the needful
Very Thanks to all,
Please Help..
By
Gopi A.
|
|
|
|
|
Member 4027617 wrote: If cr(2).Contains("D") Or cr(2).Contains("C") = True Then
First, this line is incorrectly written. It just so happens that the logic works in this case. This line SHOULD read:
If cr(2).Contains("D") = True Or cr(2).Contains("C") = True Then
or
If cr(2).Contains("D") Or cr(2).Contains("C") Then
Be consistent in your code.
Now that have a case where the line contains either D or C in that field, what are you doing if it doesn't? Hint: currently, you aren't doing anything. What do you have to do if the line doesn't contain your flag characters?
|
|
|
|
|
Well, you should look up the Split method.
Like this site: Parse a string using the Split method
And also, of you searched google for "Read a comma delimited text file" you would have found many examples of how to do it without asking.
If everything was not true, would it be not true that everything is not true?
<font color="red">"Assembly.<br /> Ah, yes that dreaded thing that pulled itself out of the abyss. <br />-- Wait, assembly is not that bad. It just takes time to adjust to."</font>
|
|
|
|
|
Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@partNumber",
I cant find a way to access a sql parameter from a dataset from the insertcommand. Is there a way through the partial class to access this information.
|
|
|
|
|
A DataSet is disconnected from the database. It has no knowledge of how it got its data or how the data potentially gets sent to the database, or even what database it comes from or goes to, or even if there is any database at all!
Man who stand on hill with mouth open wait long time for roast duck to drop in
|
|
|
|
|
How we can check folder read/write or full control permissions using VB6.0?
Thanks.
|
|
|
|
|
Are you trying to find out if a particular person has permissions before writing to a file or what?? Why are you doing this?? Maybe there is another way besides trying to get the ACL for a folder.
|
|
|
|
|
FileSystem.GetAttr("C:\here") = vbReadOnly
You don't get very much more.
Panic, Chaos, Destruction.
My work here is done.
|
|
|
|
|